示例#1
0
        public void test_translate_number_list_contains_expression()
        {
            IEnumerable <long> integers = new List <long> {
                21, 33, 428
            };

            //translator = this.GetTranslator(a => new string[2]{"L","C"}.Contains(a.Alias));
            translator = this.GetTranslator(a => integers.Contains(a.Id));
            Assert.AreEqual("(|(id=21)(id=33)(id=428))", translator.FilterString);

            IEnumerable <double> doubles = new List <double> {
                21.21, 33.33, 428.11
            };

            //translator = this.GetTranslator(a => new string[2]{"L","C"}.Contains(a.Alias));
            translator = this.GetTranslator(a => doubles.Contains(a.Id));
            Assert.AreEqual("(|(id=21.21)(id=33.33)(id=428.11))", translator.FilterString);

            IEnumerable <decimal> decimals = new List <decimal> {
                21.21m, 33.33m, 428.11m
            };

            //translator = this.GetTranslator(a => new string[2]{"L","C"}.Contains(a.Alias));
            translator = this.GetTranslator(a => decimals.Contains(a.Id));
            Assert.AreEqual("(|(id=21.21)(id=33.33)(id=428.11))", translator.FilterString);
        }
示例#2
0
        public void test_translate_multi_level_property_access_with_expression()
        {
            DirectoryAccount account = new DirectoryAccount {
                Alias = "Dummy", GivenName = "GivN", SurName = "SirN", Id = 132
            };
            var level1 = new {
                level2 = new {
                    level3 = new {
                        acc = account
                    }
                }
            };

            translator = this.GetTranslator(a => a.Alias != level1.level2.level3.acc.GivenName);
            Assert.AreEqual("(!(alias=GivN))", translator.FilterString);

            translator = this.GetTranslator(a => level1.level2.level3.acc.GivenName != a.Alias);
            Assert.AreEqual("(!(alias=GivN))", translator.FilterString);

            translator = this.GetTranslator(a => a.Alias == level1.level2.level3.acc.GivenName);
            Assert.AreEqual("(alias=GivN)", translator.FilterString);

            translator = this.GetTranslator(a => level1.level2.level3.acc.GivenName == a.Alias);
            Assert.AreEqual("(alias=GivN)", translator.FilterString);

            translator = this.GetTranslator(a => a.Id == level1.level2.level3.acc.Id);
            Assert.AreEqual("(id=132)", translator.FilterString);

            translator = this.GetTranslator(a => level1.level2.level3.acc.Id == a.Id);
            Assert.AreEqual("(id=132)", translator.FilterString);
        }
示例#3
0
        public void test_translate_expression_with_local_variable_constant()
        {
            string variable = "ALoon";

            translator = this.GetTranslator(a => a.Alias == variable);
            Assert.AreEqual("(alias=ALoon)", translator.FilterString);
        }
示例#4
0
        public void test_translate_complex_expression()
        {
            //service.Find(a => a.Alias.StartsWith("ALoo") || a.GIN == "04878765");
            //service.Find(a => a.Alias.StartsWith("ALoon") || a.GIN == "04878765" && a.EmployeeType == "employee");
            string[] aliases = new string[] {
                "lyufei", "aloon", "kli5"
            };

            translator = this.GetTranslator(a => aliases.Contains(a.Alias) && a.JobCode == "0000-No Job Code");
            Assert.AreEqual("(&(|(alias=lyufei)(alias=aloon)(alias=kli5))(JobCode=0000-No Job Code))", translator.FilterString);

            translator = this.GetTranslator(a => a.SurName.Contains("Liu") && a.GivenName.StartsWith("Yu"));
            Assert.AreEqual("(&(sn=*Liu*)(GivenName=Yu*))", translator.FilterString);

            translator = this.GetTranslator(a => (a.Alias == "lyufei" || a.Alias == "aloon" || a.Alias == "Kli5") && a.Alias != "lyufei");
            Assert.AreEqual("(&(|(alias=lyufei)(alias=aloon)(alias=Kli5))(!(alias=lyufei)))", translator.FilterString);

            translator = this.GetTranslator(a => a.Alias.StartsWith("LYufei") && a.GIN == "089888" && a.Id <= 20 && (a.Id != 10 || a.GivenName == "Yufei" || !(a.JobCode != "000")));
            Assert.AreEqual("(&(alias=LYufei*)(EmployeeNumber=089888)(id<=20)(|(!(id=10))(GivenName=Yufei)(!(!(JobCode=000)))))", translator.FilterString);

            translator = this.GetTranslator(a => (a.ObjectClass == "person" || a.ObjectClass == "user") && (a.Alias == "LYufei" || a.GIN == "098765" || a.City == "Jiangxi"));
            Assert.AreEqual("(&(|(objectClass=person)(objectClass=user))(|(alias=LYufei)(EmployeeNumber=098765)(l=Jiangxi)))", translator.FilterString);

            translator = this.GetTranslator(a => ((a.JobCode == "888" || a.JobCode == "999") && (a.Id == 12 || a.Id == 22)) ||
                                            ((a.GivenName == "Yufei" && a.SurName == "Liu") || (a.GivenName == "Muxue" && a.SurName == "Jiang")));
            Assert.AreEqual("(|(&(|(JobCode=888)(JobCode=999))(|(id=12)(id=22)))(&(GivenName=Yufei)(sn=Liu))(&(GivenName=Muxue)(sn=Jiang)))", translator.FilterString);
        }
示例#5
0
        public void test_translate_string_contains_expression_withlocal_variable_constant()
        {
            string variable = "Yufei";

            translator = this.GetTranslator(a => a.DisplayName.Contains(variable));
            Assert.AreEqual("(DisplayName=*Yufei*)", translator.FilterString);
        }
示例#6
0
        public void test_translate_contains_without_element2()
        {
            string[] empty_array = new string[0];

            translator = this.GetTranslator(a => empty_array.Contains(a.ObjectClass) &&
                                            a.CommonName == "Yufei Liu" &&
                                            a.DirectManager == "Mgn" ||
                                            (a.DisplayName == "display" && a.Alias == "KO"));
            Assert.AreEqual("(|(&(cn=Yufei Liu)(manager=Mgn))(&(DisplayName=display)(alias=KO)))", translator.FilterString);
        }
示例#7
0
        public void test_translate_enumerable_contains_expression()
        {
            IEnumerable <String> aliases = new List <string> {
                "LYufei", "ALoon", "KLi5"
            };

            //translator = this.GetTranslator(a => new string[2]{"L","C"}.Contains(a.Alias));
            translator = this.GetTranslator(a => aliases.Contains(a.Alias));
            Assert.AreEqual("(|(alias=LYufei)(alias=ALoon)(alias=KLi5))", translator.FilterString);
        }
示例#8
0
        public void test_translate_object_list_contains_expression()
        {
            IEnumerable <Object> objects = new List <Object> {
                "LYufei", 12, new Exception("EXP"), false
            };

            //translator = this.GetTranslator(a => new string[2]{"L","C"}.Contains(a.Alias));
            translator = this.GetTranslator(a => objects.Contains(a.GIN));
            Assert.AreEqual("(|(EmployeeNumber=LYufei)(EmployeeNumber=12)(EmployeeNumber=System.Exception: EXP)(EmployeeNumber=False))", translator.FilterString);
        }
示例#9
0
        public void test_translate_inline_list_contains_expression()
        {
            translator = this.GetTranslator(a => new List <string> {
                "L", "C"
            }.Contains(a.Alias));
            Assert.AreEqual("(|(alias=L)(alias=C))", translator.FilterString);

            translator = this.GetTranslator(a => new List <long> {
                800, 900
            }.Contains(a.Id));
            Assert.AreEqual("(|(id=800)(id=900))", translator.FilterString);
        }
示例#10
0
        public void test_translate_string_contains_expression_with_local_variable_to_string_converted()
        {
            int variable = 12;

            translator = this.GetTranslator(a => a.DisplayName.Contains(variable.ToString()));
            Assert.AreEqual("(DisplayName=*12*)", translator.FilterString);

            List <int> variable1 = new List <int> {
                2, 3, 4
            };

            translator = this.GetTranslator(a => a.DisplayName.Contains(variable1.ToString()));
            Assert.AreEqual("(DisplayName=*System.Collections.Generic.List`1[System.Int32]*)", translator.FilterString);

            translator = this.GetTranslator(a => a.City == variable.ToString());
            Assert.AreEqual("(l=12)", translator.FilterString);

            translator = this.GetTranslator(a => a.City == variable1.ToString());
            Assert.AreEqual("(l=System.Collections.Generic.List`1[System.Int32])", translator.FilterString);
        }
示例#11
0
        public void test_not_supported_expression()
        {
            String query = null;

            Assert.Throws <NotSupportedException>(() => {
                translator = this.GetTranslator(a => a.GIN + a.SurName == "1111");
                query      = translator.FilterString;
            },
                                                  "Add expression is not supported, expression: (a.GIN + a.SurName)");

            Assert.Throws <NotSupportedException>(() => {
                translator = this.GetTranslator(a => a.GIN == "1111" + a.SurName);
                query      = translator.FilterString;
            },
                                                  "Add expression is not supported, expression: (a.GIN + a.SurName)");

            Assert.Throws <NotSupportedException>(() => {
                translator = this.GetTranslator(a => a.Managers.Contains(a.Alias));
                query      = translator.FilterString;
            },
                                                  "lambda expression error: unableto build query from lambda paramter, a value must be supplied expression: a.ManagerDNs.Contains(a.Alias)");
        }
示例#12
0
        public void test_translate_property_access_with_expression()
        {
            DirectoryAccount account = new DirectoryAccount {
                Alias = "Dummy", GivenName = "GivN", SurName = "SirN", Id = 132
            };

            translator = this.GetTranslator(a => a.Alias != account.GivenName);
            Assert.AreEqual("(!(alias=GivN))", translator.FilterString);

            translator = this.GetTranslator(a => account.GivenName != a.Alias);
            Assert.AreEqual("(!(alias=GivN))", translator.FilterString);

            translator = this.GetTranslator(a => a.Alias == account.GivenName);
            Assert.AreEqual("(alias=GivN)", translator.FilterString);

            translator = this.GetTranslator(a => account.GivenName == a.Alias);
            Assert.AreEqual("(alias=GivN)", translator.FilterString);

            translator = this.GetTranslator(a => a.Id == account.Id);
            Assert.AreEqual("(id=132)", translator.FilterString);

            translator = this.GetTranslator(a => account.Id == a.Id);
            Assert.AreEqual("(id=132)", translator.FilterString);
        }
示例#13
0
 public void test_translate_mixed_and_also_or_else_expression()
 {
     translator = this.GetTranslator(a => (a.Alias == "YLiu" || a.Alias == "ALoon" || a.Alias == "KLi5") && a.Alias == "KLi5");
     Assert.AreEqual("(&(|(alias=YLiu)(alias=ALoon)(alias=KLi5))(alias=KLi5))", translator.FilterString);
 }
示例#14
0
 public void test_translate_string_contains_expression()
 {
     translator = this.GetTranslator(a => a.DisplayName.Contains("Yufei"));
     Assert.AreEqual("(DisplayName=*Yufei*)", translator.FilterString);
 }
示例#15
0
 public void test_translate_less_than_or_equal_expression()
 {
     translator = this.GetTranslator(a => a.Id <= 100);
     Assert.AreEqual("(id<=100)", translator.FilterString);
 }
示例#16
0
 public void test_translate_greater_than_expression()
 {
     translator = this.GetTranslator(a => a.Id > 0);
     Assert.AreEqual("(id>0)", translator.FilterString);
 }
示例#17
0
 public void test_translate_equal_expression()
 {
     translator = this.GetTranslator(a => a.Alias == "YLiu");
     Assert.AreEqual("(alias=YLiu)", translator.FilterString);
 }
示例#18
0
 public void test_translate_and_also_expression()
 {
     translator = this.GetTranslator(a => a.Alias == "YLiu" && a.Alias == "ALoon" && a.Alias == "KLi5");
     Assert.AreEqual("(&(alias=YLiu)(alias=ALoon)(alias=KLi5))", translator.FilterString);
 }
示例#19
0
 public void test_translate_contains_without_element()
 {
     string[] empty_array = new string[0];
     translator = this.GetTranslator(a => empty_array.Contains(a.ObjectClass));
     Assert.AreEqual("", translator.FilterString);
 }
示例#20
0
 public void test_translate_to_string_conversion_on_parameter()
 {
     translator = this.GetTranslator(a => a.Id.ToString() == "value-string");
     Assert.AreEqual("(id=value-string)", translator.FilterString);
 }
示例#21
0
 public void test_translate_ends_with_expression()
 {
     translator = this.GetTranslator(a => a.DisplayName.EndsWith("Yufei"));
     Assert.AreEqual("(DisplayName=*Yufei)", translator.FilterString);
 }
示例#22
0
 public void test_translate_array_property_contains_expression()
 {
     translator = this.GetTranslator(a => a.Managers.Contains("manager-dn"));
     Assert.AreEqual("(manager=manager-dn)", translator.FilterString);
 }