/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.ohdsi.webapi.vocabulary.test; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.Assert; import org.ohdsi.webapi.vocabulary.Concept; import org.ohdsi.webapi.vocabulary.ConceptSetExpression; import org.ohdsi.webapi.vocabulary.ConceptSetExpressionQueryBuilder; /** * * @author cknoll1 */ public class ConceptSetExpressionTests { private static ConceptSetExpression getTestExpression() { ConceptSetExpression exp = new ConceptSetExpression(); exp.items = new ConceptSetExpression.ConceptSetItem[8]; exp.items[0] = new ConceptSetExpression.ConceptSetItem(); exp.items[0].concept = new Concept(); exp.items[0].concept.conceptId = 1L; exp.items[0].concept.conceptName = "First Concept"; exp.items[0].isExcluded = false; exp.items[0].includeDescendants = false; exp.items[0].includeMapped = false; exp.items[1] = new ConceptSetExpression.ConceptSetItem(); exp.items[1].concept = new Concept(); exp.items[1].concept.conceptId = 2L; exp.items[1].concept.conceptName = "Second Concept"; exp.items[1].isExcluded = false; exp.items[1].includeDescendants = true; exp.items[1].includeMapped = false; exp.items[2] = new ConceptSetExpression.ConceptSetItem(); exp.items[2].concept = new Concept(); exp.items[2].concept.conceptId = 3L; exp.items[2].concept.conceptName = "Third Concept"; exp.items[2].isExcluded = false; exp.items[2].includeDescendants = true; exp.items[2].includeMapped = true; exp.items[3] = new ConceptSetExpression.ConceptSetItem(); exp.items[3].concept = new Concept(); exp.items[3].concept.conceptId = 4L; exp.items[3].concept.conceptName = "Forth Concept (Excluded)"; exp.items[3].isExcluded = true; exp.items[3].includeDescendants = false; exp.items[3].includeMapped = false; exp.items[4] = new ConceptSetExpression.ConceptSetItem(); exp.items[4].concept = new Concept(); exp.items[4].concept.conceptId = 5L; exp.items[4].concept.conceptName = "Fith Concept (Excluded)"; exp.items[4].isExcluded = true; exp.items[4].includeDescendants = true; exp.items[4].includeMapped = false; exp.items[5] = new ConceptSetExpression.ConceptSetItem(); exp.items[5].concept = new Concept(); exp.items[5].concept.conceptId = 6L; exp.items[5].concept.conceptName = "Sixth Concept (Excluded)"; exp.items[5].isExcluded = true; exp.items[5].includeDescendants = false; exp.items[5].includeMapped = true; exp.items[6] = new ConceptSetExpression.ConceptSetItem(); exp.items[6].concept = new Concept(); exp.items[6].concept.conceptId = 7L; exp.items[6].concept.conceptName = "Seventh Concept (Excluded)"; exp.items[6].isExcluded = true; exp.items[6].includeDescendants = true; exp.items[6].includeMapped = true; exp.items[7] = new ConceptSetExpression.ConceptSetItem(); exp.items[7].concept = new Concept(); exp.items[7].concept.conceptId = 8L; exp.items[7].concept.conceptName = "Eigth Concept"; exp.items[7].isExcluded = false; exp.items[7].includeDescendants = false; exp.items[7].includeMapped = true; return exp; } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Test public void SimpleConceptSetExpressionBuild() { ConceptSetExpressionQueryBuilder builder = new ConceptSetExpressionQueryBuilder(); ConceptSetExpression testExpression = getTestExpression(); String conceptSetExpressionSql = builder.buildExpressionQuery(testExpression); // included concepts should have (1,2,3,8) Assert.assertTrue(conceptSetExpressionSql.indexOf("(1,2,3,8)") > 0); // included descendants should have (2,3) Assert.assertTrue(conceptSetExpressionSql.indexOf("(2,3)") > 0); // excluded concepts should have (4,5,6,7) Assert.assertTrue(conceptSetExpressionSql.indexOf("(4,5,6,7)") > 0); // excluded descendants should have (5,7) Assert.assertTrue(conceptSetExpressionSql.indexOf("(5,7)") > 0); // mapped concepts should have (3,8) Assert.assertTrue(conceptSetExpressionSql.indexOf("(3,8)") > 0); // mapped descendants should have 3 Assert.assertTrue(conceptSetExpressionSql.indexOf("(3)") > 0); // mapped excludes should have (6,7) Assert.assertTrue(conceptSetExpressionSql.indexOf("(6,7)") > 0); // mapped exclude descendants should have (7) Assert.assertTrue(conceptSetExpressionSql.indexOf("(7)") > 0); } }