// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchdefinition.derived; import com.yahoo.document.*; import com.yahoo.searchdefinition.SearchBuilder; import com.yahoo.searchdefinition.document.SDDocumentType; import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.*; /** * Tests deriving of documentmanager * * @author Mathias Moelster Lidal */ public class DocumentDeriverTestCase extends AbstractExportingTestCase { @Test public void testDocumentDeriving() { String root = "src/test/derived/documentderiver/"; List files = new ArrayList<>(); files.add(root + "newsarticle.sd"); files.add(root + "newssummary.sd"); files.add(root + "music.sd"); files.add(root + "mail.sd"); files.add(root + "compression_header.sd"); files.add(root + "compression_both.sd"); files.add(root + "compression_body.sd"); File toDir = new File("temp/documentderiver/"); toDir.mkdir(); SearchBuilder builder = Deriver.deriveDocuments(files, toDir.getPath()); try { assertEqualFiles(root + "documentmanager.cfg", toDir.getPath() + "/documentmanager.cfg"); } catch (IOException e) { throw new RuntimeException("Exception while comparing files", e); } SDDocumentType doc = builder.getSearch("newsarticle").getDocument(); assertNotNull(doc); } @Test public void testStructTypesNotUsed() { String root = "src/test/derived/documentderiver/"; List files = new ArrayList<>(); files.add(root + "sombrero.sd"); File toDir = new File("temp/structtypesnotused/"); toDir.mkdir(); Deriver.deriveDocuments(files, toDir.getPath()); DocumentTypeManager dtm = new DocumentTypeManager(); int numBuiltInTypes = dtm.getDataTypes().size(); dtm.configure("file:" + toDir.getPath() + "/documentmanager.cfg"); DocumentType webDocType = dtm.getDocumentType("webdoc"); assertNotNull(webDocType); assertEquals(1, webDocType.fieldSet().size()); Field html = webDocType.getField("html"); assertNotNull(html); assertEquals(DataType.STRING, html.getDataType()); assertEquals(numBuiltInTypes + 8, dtm.getDataTypes().size()); { StructDataType keyvalue = (StructDataType) dtm.getDataType("keyvalue"); assertNotNull(keyvalue); assertEquals(2, keyvalue.getFields().size()); Field key = keyvalue.getField("key"); assertNotNull(key); assertEquals(DataType.STRING, key.getDataType()); Field value = keyvalue.getField("value"); assertNotNull(value); assertEquals(DataType.STRING, value.getDataType()); } { StructDataType tagvalue = (StructDataType) dtm.getDataType("tagvalue"); assertNotNull(tagvalue); assertEquals(2, tagvalue.getFields().size()); Field name = tagvalue.getField("name"); assertNotNull(name); assertEquals(DataType.STRING, name.getDataType()); Field attributes = tagvalue.getField("attributes"); assertNotNull(attributes); assertTrue(attributes.getDataType() instanceof ArrayDataType); assertEquals(dtm.getDataType("keyvalue"), ((ArrayDataType) attributes.getDataType()).getNestedType()); } { StructDataType wordform = (StructDataType) dtm.getDataType("wordform"); assertNotNull(wordform); assertEquals(3, wordform.getFields().size()); Field kind = wordform.getField("kind"); assertNotNull(kind); assertEquals(DataType.INT, kind.getDataType()); Field form = wordform.getField("form"); assertNotNull(form); assertEquals(DataType.STRING, form.getDataType()); Field weight = wordform.getField("weight"); assertNotNull(weight); assertEquals(DataType.FLOAT, weight.getDataType()); } } }