private void verifyInclude(Dictionary <string, HDict> map, string query, string expected) { dbPather db = new dbPather(map); /* old Java style interface implementation the above replaces * db() * { * public HDict find(String id) { return map.get(id); } * }; */ HFilter q = HFilter.make(query); string actual = ""; // I don't like char loops like this but it is not incorrect either for // sake of consistency with Java toolkit I have left it alone for (int c = 'a'; c <= 'c'; ++c) { string id = "" + (char)c; if (q.include(db.find(id), db)) { actual += actual.Length > 0 ? "," + id : id; } } Assert.AreEqual(expected, actual); }
public void testUnit() { verifyParse("dur < 5ns", HFilter.lt("dur", n(5, "ns"))); verifyParse("dur < 10kg", HFilter.lt("dur", n(10, "kg"))); verifyParse("dur < -9sec", HFilter.lt("dur", n(-9, "sec"))); verifyParse("dur < 2.5hr", HFilter.lt("dur", n(2.5, "hr"))); }
public void testParens() { verifyParse("(a)", HFilter.has("a")); verifyParse("(a) and (b)", HFilter.has("a").and(HFilter.has("b"))); verifyParse("( a ) and ( b ) ", HFilter.has("a").and(HFilter.has("b"))); verifyParse("(a or b) or (c == 3)", HFilter.has("a").or(HFilter.has("b")).or(HFilter.eq("c", n(3)))); }
public void testFloat() { verifyParse("num < 4.0", HFilter.lt("num", n(4f))); verifyParse("num <= -9.6", HFilter.le("num", n(-9.6f))); verifyParse("num > 400000", HFilter.gt("num", n(4e5f))); verifyParse("num >= 16000", HFilter.ge("num", n(1.6e+4f))); verifyParse("num >= 2.16", HFilter.ge("num", n(2.16))); }
public void testBasics() { verifyParse("x", HFilter.has("x")); verifyParse("foo", HFilter.has("foo")); verifyParse("fooBar", HFilter.has("fooBar")); verifyParse("foo7Bar", HFilter.has("foo7Bar")); verifyParse("foo_bar->a", HFilter.has("foo_bar->a")); verifyParse("a->b->c", HFilter.has("a->b->c")); verifyParse("not foo", HFilter.missing("foo")); }
public void testCombo() { HFilter isA = HFilter.has("a"); HFilter isB = HFilter.has("b"); HFilter isC = HFilter.has("c"); HFilter isD = HFilter.has("d"); verifyParse("a and b or c", (isA.and(isB)).or(isC)); verifyParse("a or b and c", isA.or(isB.and(isC))); verifyParse("a and b or c and d", (isA.and(isB)).or(isC.and(isD))); verifyParse("(a and (b or c)) and d", isA.and(isB.or(isC)).and(isD)); verifyParse("(a or (b and c)) or d", isA.or(isB.and(isC)).or(isD)); }
public void testInt() { verifyParse("num < 4", HFilter.lt("num", n(4))); verifyParse("num <= -99", HFilter.le("num", n(-99))); }
public void testUri() { verifyParse("ref==`http://foo/?bar`", HFilter.eq("ref", HUri.make("http://foo/?bar"))); verifyParse("ref->x==`file name`", HFilter.eq("ref->x", HUri.make("file name"))); verifyParse("ref == `foo bar`", HFilter.eq("ref", HUri.make("foo bar"))); }
public void testStr() { verifyParse("x==\"hi\"", HFilter.eq("x", HStr.make("hi"))); verifyParse("x!=\"\\\"hi\\\"\"", HFilter.ne("x", HStr.make("\"hi\""))); verifyParse("x==\"_\\u00a3_\\n_\"", HFilter.eq("x", HStr.make("_\u00a3_\n_"))); // Was abcd but changed to valid unicode pound }
public void testBool() { verifyParse("x->y==true", HFilter.eq("x->y", HBool.TRUE)); verifyParse("x->y!=false", HFilter.ne("x->y", HBool.FALSE)); }
public void testZincOnlyLiteralsDontWork() { Assert.IsNull(HFilter.make("x==T", false)); Assert.IsNull(HFilter.make("x==F", false)); Assert.IsNull(HFilter.make("x==F", false)); }
public void testIdentity() { Assert.IsTrue(HFilter.has("a").hequals(HFilter.has("a"))); Assert.IsFalse(HFilter.has("a").hequals(HFilter.has("b"))); }
public void testDateTime() { verifyParse("foo < 2009-10-30", HFilter.lt("foo", HDate.make("2009-10-30"))); verifyParse("foo < 08:30:00", HFilter.lt("foo", HTime.make("08:30:00"))); verifyParse("foo < 13:00:00", HFilter.lt("foo", HTime.make("13:00:00"))); }
void verifyParse(string s, HFilter expected) { HFilter actual = HFilter.make(s); Assert.IsTrue(actual.hequals(expected)); }
public void testOr() { verifyParse("a or b", HFilter.has("a").or(HFilter.has("b"))); verifyParse("a or b or c == 3", HFilter.has("a").or(HFilter.has("b").or(HFilter.eq("c", n(3))))); }
public void testAnd() { verifyParse("a and b", HFilter.has("a").and(HFilter.has("b"))); verifyParse("a and b and c == 3", HFilter.has("a").and(HFilter.has("b").and(HFilter.eq("c", n(3))))); }
public void testRef() { verifyParse("author == @xyz", HFilter.eq("author", HRef.make("xyz"))); verifyParse("author==@xyz:foo.bar", HFilter.eq("author", HRef.make("xyz:foo.bar"))); }