public void CanLookupIgnoreCase() { var envIgnoreCase = new StandardEnvironment(); envIgnoreCase.DefineValue("foo", "bar"); Assert.AreEqual("bar", envIgnoreCase.Lookup("foo", null)); Assert.AreEqual("bar", envIgnoreCase.Lookup("FOO", null)); var ex1 = Assert.Catch <EvaluationException>(() => envIgnoreCase.Lookup("foo", "qualifier")); Console.WriteLine(@"Expected exception: {0}", ex1.Message); Assert.IsInstanceOf(typeof(Function), envIgnoreCase.Lookup("TRIM", null)); Assert.IsInstanceOf(typeof(Function), envIgnoreCase.Lookup("Trim", null)); }
public void CannotLookupAmbiguous() { var env = new StandardEnvironment(); var one = new ConstantValueTestRow("one", "FOO"); var two = new ConstantValueTestRow("two", "FOO"); env.DefineFields(one, "one"); env.DefineFields(two, "two"); var ex = Assert.Catch <EvaluationException>(() => env.Lookup("FOO", null)); Console.WriteLine(@"Expected exception: {0}", ex.Message); Assert.AreEqual("one", env.Lookup("FOO", "one")); Assert.AreEqual("two", env.Lookup("FOO", "two")); }
public void CanLookupQualified() { var env = new StandardEnvironment(false); env.DefineValue("foo", "bar"); Assert.AreEqual("bar", env.Lookup("foo", null)); var ex1 = Assert.Catch <EvaluationException>(() => env.Lookup("foo", "qualifier")); Console.WriteLine(@"Expected exception: {0}", ex1.Message); Assert.IsInstanceOf <Function>(env.Lookup("TRIM", null)); var ex2 = Assert.Catch <EvaluationException>(() => env.Lookup("TRIM", "qualifier")); Console.WriteLine(@"Expected exception: {0}", ex2.Message); }
public void CanLookupPrecedence() { // Lookup precedence for unqualified names: // defined value < standard function < field value // Qualified names are always looked up on a row of fields // defined with the qualifier. CONCAT is a standard function. var env = new StandardEnvironment(); var row = new ConstantValueTestRow("row", "CONCAT", "FOO"); const string qualifier = "qualifier"; Assert.Catch <EvaluationException>(() => env.Lookup("FOO", null)); Assert.IsInstanceOf <Function>(env.Lookup("CONCAT", null)); Assert.Catch <EvaluationException>(() => env.Lookup("CONCAT", qualifier)); env.DefineFields(row, qualifier); Assert.AreEqual("row", env.Lookup("FOO", null)); Assert.IsInstanceOf <Function>(env.Lookup("CONCAT", null)); Assert.AreEqual("row", env.Lookup("CONCAT", qualifier)); env.DefineValue("FOO", "foo"); env.DefineValue("CONCAT", "value"); Assert.AreEqual("foo", env.Lookup("FOO", null)); Assert.AreEqual("value", env.Lookup("CONCAT", null)); Assert.AreEqual("row", env.Lookup("CONCAT", qualifier)); env.ForgetValue("CONCAT"); env.ForgetValue("FOO"); Assert.AreEqual("row", env.Lookup("FOO", null)); Assert.IsInstanceOf <Function>(env.Lookup("CONCAT", null)); Assert.AreEqual("row", env.Lookup("CONCAT", qualifier)); env.ForgetFields("qualifier"); Assert.Catch <EvaluationException>(() => env.Lookup("FOO", null)); Assert.IsInstanceOf <Function>(env.Lookup("CONCAT", null)); Assert.Catch <EvaluationException>(() => env.Lookup("CONCAT", qualifier)); }