-package org.simantics.scl.compiler.tests.unit;\r
-\r
-import java.util.Collection;\r
-\r
-import org.junit.Test;\r
-import org.simantics.scl.compiler.environment.filter.AcceptAllNamespaceFilter;\r
-import org.simantics.scl.compiler.environment.filter.NamespaceFilter;\r
-import org.simantics.scl.compiler.environment.filter.NamespaceFilters;\r
-import org.simantics.scl.compiler.environment.filter.NegativeNamespaceFilter;\r
-import org.simantics.scl.compiler.environment.filter.PositiveNamespaceFilter;\r
-\r
-import gnu.trove.set.hash.THashSet;\r
-import junit.framework.Assert;\r
-\r
-public class TestNamespaceFilter {\r
- \r
- private void testBooleanOperations(Collection<String> all, NamespaceFilter a, NamespaceFilter b) {\r
- {\r
- NamespaceFilter c = NamespaceFilters.union(a, b);\r
- //System.out.println("union(" + a + ", " + b + ") = " + c);\r
- for(String name : all)\r
- Assert.assertEquals(\r
- a.isValueIncluded(name) || b.isValueIncluded(name),\r
- c.isValueIncluded(name));\r
- }\r
- {\r
- NamespaceFilter c = NamespaceFilters.intersection(a, b);\r
- //System.out.println("intersection(" + a + ", " + b + ") = " + c);\r
- for(String name : all)\r
- Assert.assertEquals(\r
- a.isValueIncluded(name) && b.isValueIncluded(name),\r
- c.isValueIncluded(name));\r
- }\r
- }\r
-\r
- private void testBooleanOperations(THashSet<String> a, THashSet<String> b) {\r
- THashSet<String> all = new THashSet<String>();\r
- all.addAll(a);\r
- all.addAll(b);\r
- all.add("dummy");\r
- \r
- PositiveNamespaceFilter pa = new PositiveNamespaceFilter(a);\r
- NegativeNamespaceFilter na = new NegativeNamespaceFilter(a);\r
- PositiveNamespaceFilter pb = new PositiveNamespaceFilter(b);\r
- NegativeNamespaceFilter nb = new NegativeNamespaceFilter(b);\r
- testBooleanOperations(all, pa, pb);\r
- testBooleanOperations(all, na, pb);\r
- testBooleanOperations(all, pa, nb);\r
- testBooleanOperations(all, na, nb);\r
- }\r
- \r
- private void testBooleanOperations(THashSet<String> a) {\r
- THashSet<String> all = new THashSet<String>();\r
- all.addAll(a);\r
- all.add("dummy");\r
- \r
- PositiveNamespaceFilter pa = new PositiveNamespaceFilter(a);\r
- NegativeNamespaceFilter na = new NegativeNamespaceFilter(a);\r
- testBooleanOperations(all, pa, AcceptAllNamespaceFilter.INSTANCE);\r
- testBooleanOperations(all, na, AcceptAllNamespaceFilter.INSTANCE);\r
- testBooleanOperations(all, AcceptAllNamespaceFilter.INSTANCE, pa);\r
- testBooleanOperations(all, AcceptAllNamespaceFilter.INSTANCE, na);\r
- testBooleanOperations(all, AcceptAllNamespaceFilter.INSTANCE, AcceptAllNamespaceFilter.INSTANCE);\r
- }\r
- \r
- @Test\r
- public void testBooleanOperations() {\r
- for(int p=0;p<8;++p) {\r
- THashSet<String> a = new THashSet<String>();\r
- for(int i=0;i<3;++i)\r
- if(((p >> i) & 1) == 1)\r
- a.add(String.valueOf(i));\r
- testBooleanOperations(a);\r
- }\r
- \r
- for(int p=0;p<64;++p) {\r
- THashSet<String> a = new THashSet<String>();\r
- THashSet<String> b = new THashSet<String>();\r
- for(int i=0;i<3;++i) {\r
- if(((p >> i) & 1) == 1)\r
- a.add(String.valueOf(i));\r
- if(((p >> (i+3)) & 1) == 1)\r
- b.add(String.valueOf(i));\r
- }\r
- testBooleanOperations(a, b);\r
- }\r
- }\r
- \r
-}\r