Ejemplo n.º 1
0
        public void ARProxy_GetEntryList_by_filter_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    0,
                    delegate(System.Reflection.PropertyInfo pi){
                    return(pi.Name == "CharacterField");
                },
                    null,
                    null,
                    null);

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(null, model.IntegerField);
                }

                var models2 = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    0,
                    delegate(System.Reflection.PropertyInfo pi)
                {
                    return(pi.Name == "CharacterField" || pi.Name == "IntegerField");
                },
                    null,
                    null,
                    null);

                Assert.AreEqual(7, models2.Count);
                foreach (var model in models2)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(1, model.IntegerField);
                }
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 2
0
        public static void Initialize(TestContext context2)
        {
            ARLoginContext context = null;

            try
            {
                context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
                //int totalMatch = -1;
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    null,
                    0,
                    null,
                    null);
                foreach (var model in models)
                {
                    proxy.DeleteEntry(model);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("env init in Construct error.", ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 3
0
        public void GetEntryList_by_expression_qulifier_fieldIds_haspage_hascount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                TotalMatch total = new TotalMatch();
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var retlist = proxy.GetEntryList(
                    m => m.CharacterField.Contains("%你好%"),
                    0,
                    5,
                    total,
                    null,
                    m => m.CharacterField,
                    m => m.RequestID
                    );
                Assert.AreEqual(5, retlist.Count);
                Assert.AreEqual(11, total.Value);
                foreach (var entry in retlist)
                {
                    Assert.AreEqual(true, entry.CharacterField.Contains("你好"));
                }

                Assert.AreEqual(4, Convert.ToInt32(retlist.Max(m => m.RequestID)) - Convert.ToInt32(retlist.Min(m => m.RequestID)));
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 4
0
        public void GetEntryList_by_expression_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    m => m.CharacterField == TestCharacterFieldValue,
                    0,
                    null,
                    null,
                    null,
                    m => m.CharacterField
                    );

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                }
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 5
0
        public static IList <TModel> GetEntryList <TModel>(this ARProxy <TModel> proxy,
                                                           string qualification,
                                                           uint StartIndex,
                                                           uint?RetrieveCount,
                                                           TotalMatch totalMatch,
                                                           List <ARSortInfo> sortInfo,
                                                           params Expression <Func <TModel, object> >[] propertiesTobeUp)
            where TModel : ARBaseForm
        {
            if (propertiesTobeUp == null || propertiesTobeUp.Length == 0)
            {
                return(null);
            }
            ITypeMetaProvider <TModel> metaProvider = new ExpressionTypeMetaProvider <TModel>(propertiesTobeUp);

            ModelMeteData <TModel> MetaData = new ModelMeteData <TModel>();

            MetaData.FormName = metaProvider.GetFormNameFromModelType();

            var props = metaProvider.GetPropertyInfoes(BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance, null);

            MetaData.Properties = new List <PropertyAndField <TModel> >();

            foreach (var p in props)
            {
                if ((p.AccessLevel & ModelBinderAccessLevel.OnlyBind) == ModelBinderAccessLevel.OnlyBind)
                {
                    MetaData.Properties.Add(p);
                }
            }

            return(proxy.GetEntryList(StartIndex, qualification, MetaData, RetrieveCount, totalMatch, sortInfo));
        }
Ejemplo n.º 6
0
        public void ARProxy_GetEntryList_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                List <uint> fieldIds = new List <uint>();
                fieldIds.Add(TestCharacterFieldId);
                //int totalMatch = -1;
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    fieldIds,
                    0,
                    null,
                    null,
                    null);

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                }
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
 public static void Initialize(TestContext context2)
 {
     ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
     try
     {
         //int totalMatch = -1;
         ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
         var models = proxy.GetEntryList(
             null,
             new string[] { "RequestID" },
             null,
             0,
             null,
             null);
         foreach (var model in models)
         {
             proxy.DeleteEntry(model);
         }
     }
     catch (Exception ex)
     {
         throw new Exception("env init in Construct error.", ex);
     }
     finally
     {
         context.Dispose();
     }
 }
Ejemplo n.º 8
0
        public void ARProxy_GetEntryList_by_Properties_Str_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    new string[] { "CharacterField" },
                    null,
                    0,
                    null,
                    null);

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(null, model.IntegerField);
                }

                var models2 = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    new string[] { "CharacterField", "IntegerField" },
                    null,
                    0,
                    null,
                    null);

                Assert.AreEqual(7, models2.Count);
                foreach (var model in models2)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(1, model.IntegerField);
                }
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 9
0
        public static void Initialize(TestContext context2)
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                //int totalMatch = -1;
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    null,
                    0,
                    null,
                    null);
                foreach (var model in models)
                {
                    proxy.DeleteEntry(model);
                }

                NRemedy_Test_Regular_Form newentry = new NRemedy_Test_Regular_Form();
                newentry.CharacterField     = TestCharacterFieldValue;
                newentry.Radio_Button_Field = null;
                newentry.IntegerField       = 1;
                for (int i = 0; i < 7; i++)
                {
                    proxy.CreateEntry(newentry);
                }

                newentry.CharacterField = TestCharacterFieldValueChinese;
                newentry.IntegerField   = 2;
                for (int i = 0; i < 9; i++)
                {
                    proxy.CreateEntry(newentry);
                }

                newentry.CharacterField = TestCharacterFieldValueChinese + "Set Something";
                newentry.IntegerField   = 3;
                for (int i = 0; i < 2; i++)
                {
                    proxy.CreateEntry(newentry);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("env init in Construct error.", ex);
            }
            finally
            {
                context.Dispose();
            }
        }
        public static void Initialize(TestContext context2)
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                //int totalMatch = -1;
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    null,
                    0,
                    null,
                    null);
                foreach (var model in models)
                {
                    proxy.DeleteEntry(model);
                }

                NRemedy_Test_Regular_Form newentry = new NRemedy_Test_Regular_Form();
                newentry.CharacterField = TestCharacterFieldValue;
                newentry.Radio_Button_Field = null;
                newentry.IntegerField = 1;
                for (int i = 0; i < 7; i++)
                {
                    proxy.CreateEntry(newentry);
                }

                newentry.CharacterField = TestCharacterFieldValueChinese;
                newentry.IntegerField = 2;
                for (int i = 0; i < 9; i++)
                {
                    proxy.CreateEntry(newentry);
                }

                newentry.CharacterField = TestCharacterFieldValueChinese + "Set Something";
                newentry.IntegerField = 3;
                for (int i = 0; i < 2; i++)
                {
                    proxy.CreateEntry(newentry);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("env init in Construct error.", ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 11
0
        public void ARProxy_GetEntryList_qulifier_fieldIds_nopage_hascount_hasorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                TotalMatch    total    = new TotalMatch();
                List <UInt32> fieldIds = new List <UInt32>();
                fieldIds.Add(TestCharacterFieldId);
                fieldIds.Add(TestIntFieldId);
                fieldIds.Add(1u);
                List <ARSortInfo> sortInfo = new List <ARSortInfo>();
                sortInfo.Add(new ARSortInfo
                {
                    FieldId = TestCharacterFieldId,
                    Order   = SortOrder.SORT_DESCENDING
                });

                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);

                var retlist = proxy.GetEntryList(
                    "'Character Field' LIKE \"%你好%\"",
                    fieldIds,
                    0,
                    null,
                    total,
                    sortInfo
                    );
                Assert.AreEqual(11, retlist.Count);
                Assert.AreEqual(11, total.Value);
                foreach (var entry in retlist)
                {
                    Assert.AreEqual(true, entry.CharacterField.Contains("你好"));
                }

                Assert.AreEqual(10, Convert.ToInt32(retlist.Max(m => m.RequestID)) - Convert.ToInt32(retlist.Min(m => m.RequestID)));

                Assert.AreEqual(TestCharacterFieldValueChinese + "Set Something", retlist[0].CharacterField);
                Assert.AreEqual(TestCharacterFieldValueChinese + "Set Something", retlist[1].CharacterField);
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 12
0
        public void ARProxy_GetEntryList_qulifier_fieldIds_haspage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                //int total = -1;
                List <UInt32> fieldIds = new List <UInt32>();
                fieldIds.Add(TestCharacterFieldId);
                fieldIds.Add(TestIntFieldId);
                fieldIds.Add(1u);
                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                var retlist = proxy.GetEntryList(
                    "'Character Field' LIKE \"%你好%\"",
                    fieldIds,
                    0,
                    5,
                    null,
                    null
                    );
                //paged count should be 5,although total matched count is 11
                Assert.AreEqual(5, retlist.Count);
                //Assert.AreEqual(-1, total);
                foreach (var entry in retlist)
                {
                    Assert.AreEqual(true, entry.CharacterField.Contains("你好"));
                }

                //assert the max id is greater 4 than min id
                //which means return the continous id list
                Assert.AreEqual(4, Convert.ToInt32(retlist.Max(m => m.RequestID)) - Convert.ToInt32(retlist.Min(m => m.RequestID)));
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 13
0
        public void ARProxy_Create_Entry_with_Att_01()
        {
            using (ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd))
            {
                string testStr = "This is test string , which will be save as file and create entry into AR. The Test method is ARProxy_Create_Entry_with_Att_01";

                byte[] buff = Encoding.UTF8.GetBytes(testStr);

                ARProxy <NRemedy_Test_Regular_Form> proxy = new ARProxy <NRemedy_Test_Regular_Form>(context);
                string entryId = proxy.CreateEntry(new NRemedy_Test_Regular_Form
                {
                    Attachment = new ARAttachment {
                        AttchmentName = "ARProxy_Create_Entry_with_Att_01.txt",
                        Buff          = buff
                    }
                });


                NRemedy_Test_Regular_Form entry = proxy.GetEntry(entryId);

                entry.Attachment.AttchmentName = "ARProxy_Create_Entry_with_Att_01.txt";
                Assert.AreEqual(testStr, Encoding.UTF8.GetString(entry.Attachment.Buff));



                List <UInt32> attchFIds = new List <uint>();
                attchFIds.Add(attchFId);
                //int total = -1;
                IList <NRemedy_Test_Regular_Form> entries = proxy.GetEntryList(null, attchFIds, 0, null, null, null);
                foreach (var e in entries)
                {
                    if (e.Attachment != null && e.Attachment.AttchmentName == "ARProxy_Create_Entry_with_Att_01.txt")
                    {
                        Assert.AreEqual(testStr, Encoding.UTF8.GetString(e.Attachment.Buff));
                    }
                }
            }
        }
Ejemplo n.º 14
0
        public void ARProxy_Create_Entry_with_Att_01()
        {
            using (ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd))
            {

                string testStr = "This is test string , which will be save as file and create entry into AR. The Test method is ARProxy_Create_Entry_with_Att_01";

                byte[] buff = Encoding.UTF8.GetBytes(testStr);

                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                string entryId = proxy.CreateEntry(new NRemedy_Test_Regular_Form
                {
                    Attachment = new ARAttachment {
                        AttchmentName = "ARProxy_Create_Entry_with_Att_01.txt",
                        Buff = buff
                    }
                });

                NRemedy_Test_Regular_Form entry = proxy.GetEntry(entryId);

                entry.Attachment.AttchmentName = "ARProxy_Create_Entry_with_Att_01.txt";
                Assert.AreEqual(testStr, Encoding.UTF8.GetString(entry.Attachment.Buff));

                List<UInt32> attchFIds = new List<uint>();
                attchFIds.Add(attchFId);
                //int total = -1;
                IList<NRemedy_Test_Regular_Form> entries = proxy.GetEntryList(null, attchFIds, 0, null, null, null);
                foreach (var e in entries)
                {
                    if (e.Attachment != null && e.Attachment.AttchmentName == "ARProxy_Create_Entry_with_Att_01.txt")
                    {
                        Assert.AreEqual(testStr, Encoding.UTF8.GetString(e.Attachment.Buff));
                    }
                }

            }
        }
Ejemplo n.º 15
0
        public void ARProxy_GetEntryList_qulifier_fieldIds_haspage_hascount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                TotalMatch total = new TotalMatch();
                List<UInt32> fieldIds = new List<UInt32>();
                fieldIds.Add(TestCharacterFieldId);
                fieldIds.Add(TestIntFieldId);
                fieldIds.Add(1u);
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                var retlist = proxy.GetEntryList(
                    "'Character Field' LIKE \"%你好%\"",
                    fieldIds,
                    0,
                    5,
                    total,
                    null
                    );
                Assert.AreEqual(5, retlist.Count);
                Assert.AreEqual(11, total.Value);
                foreach (var entry in retlist)
                {
                    Assert.AreEqual(true, entry.CharacterField.Contains("你好"));
                }

                Assert.AreEqual(4, Convert.ToInt32(retlist.Max(m => m.RequestID)) - Convert.ToInt32(retlist.Min(m => m.RequestID)));

            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);

            }
            finally
            {
                context.Dispose();
            }
        }
        public void GetEntryList_by_expression_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    m => m.CharacterField == TestCharacterFieldValue,
                    0,
                    null,
                    null,
                    null,
                    m => m.CharacterField
                    );

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                }

            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 17
0
        public void ARProxy_GetListEntry_MaxEntries_Cover_notCover()
        {
            Clean();
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);

            try
            {
                ARProxy <NRemedy_Test_Regular_Form> proxy    = new ARProxy <NRemedy_Test_Regular_Form>(context);
                NRemedy_Test_Regular_Form           newentry = new NRemedy_Test_Regular_Form();
                newentry.CharacterField = TestCharacterFieldValue;
                newentry.IntegerField   = 1;
                for (int i = 0; i < 588; i++)
                {
                    proxy.CreateEntry(newentry);
                }

                var results = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    null,
                    0,
                    null,
                    null);
                Assert.AreEqual(588, results.Count);


                var results2 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    300,
                    10,
                    null,
                    null);
                Assert.AreEqual(300, results2.Count);

                var results3 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    100,
                    10,
                    null,
                    null);
                Assert.AreEqual(100, results3.Count);

                for (int i = 0; i < 100; i++)
                {
                    Assert.AreEqual(results3[i].RequestID, results2[i].RequestID);
                }


                var results4 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    200,
                    400,
                    null,
                    null);
                Assert.AreEqual(188, results4.Count);

                var results5 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    null,
                    400,
                    null,
                    null);
                Assert.AreEqual(188, results5.Count);
            }
            catch (Exception ex)
            {
                throw new Exception("env init in Construct error.", ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 18
0
        public void ARProxy_GetEntryList_by_filter_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    0,
                    delegate(System.Reflection.PropertyInfo pi){
                        return pi.Name == "CharacterField";
                    },
                    null,
                    null,
                    null);

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(null, model.IntegerField);
                }

                var models2 = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    0,
                    delegate(System.Reflection.PropertyInfo pi)
                    {
                        return pi.Name == "CharacterField" || pi.Name == "IntegerField";
                    },
                    null,
                    null,
                    null);

                Assert.AreEqual(7, models2.Count);
                foreach (var model in models2)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(1, model.IntegerField);
                }

            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 19
0
        public void ARProxy_GetEntryList_by_Properties_Str_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    new string[]{ "CharacterField" },
                    null,
                    0,
                    null,
                    null);

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(null, model.IntegerField);
                }

                var models2 = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    new string[] { "CharacterField", "IntegerField" },
                    null,
                    0,
                    null,
                    null);

                Assert.AreEqual(7, models2.Count);
                foreach (var model in models2)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                    Assert.AreEqual(1, model.IntegerField);
                }

            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 20
0
        public void ARProxy_GetEntryList_qulifier_fieldIds_nopage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                List<uint> fieldIds = new List<uint>();
                fieldIds.Add(TestCharacterFieldId);
                //int totalMatch = -1;
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                var models = proxy.GetEntryList(
                    "'Character Field' = \"Hello Remedy\"",
                    fieldIds,
                    0,
                    null,
                    null,
                    null);

                Assert.AreEqual(7, models.Count);
                foreach (var model in models)
                {
                    Assert.AreEqual(TestCharacterFieldValue, model.CharacterField);
                }

            }
            catch(Exception ex)
            {
                Assert.AreEqual(null, ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 21
0
        public void ARProxy_GetEntryList_qulifier_fieldIds_nopage_hascount_hasorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                TotalMatch total = new TotalMatch();
                List<UInt32> fieldIds = new List<UInt32>();
                fieldIds.Add(TestCharacterFieldId);
                fieldIds.Add(TestIntFieldId);
                fieldIds.Add(1u);
                List<ARSortInfo> sortInfo = new List<ARSortInfo>();
                sortInfo.Add(new ARSortInfo
                {
                    FieldId = TestCharacterFieldId,
                    Order = SortOrder.SORT_DESCENDING
                });

                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);

                var retlist = proxy.GetEntryList(
                    "'Character Field' LIKE \"%你好%\"",
                    fieldIds,
                    0,
                    null,
                    total,
                    sortInfo
                    );
                Assert.AreEqual(11, retlist.Count);
                Assert.AreEqual(11, total.Value);
                foreach (var entry in retlist)
                {
                    Assert.AreEqual(true, entry.CharacterField.Contains("你好"));
                }

                Assert.AreEqual(10, Convert.ToInt32(retlist.Max(m => m.RequestID)) - Convert.ToInt32(retlist.Min(m => m.RequestID)));

                Assert.AreEqual(TestCharacterFieldValueChinese + "Set Something", retlist[0].CharacterField);
                Assert.AreEqual(TestCharacterFieldValueChinese + "Set Something", retlist[1].CharacterField);
            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);

            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 22
0
        public override object Execute(Expression expression)
        {
            //translate expression
            //visit Evalable expression
            expression = Evaluator.PartialEval(expression);
            //translate
            TranslateResult tr = this.Translate(expression);

            //T is model of AR,cache the id and property name map
            //if(!_Cache.ContainsKey(typeof(T).FullName))
            //{
            //    Dictionary<string,uint> propertry = new Dictionary<string,uint>();
            //    _Cache.Add(typeof(T).FullName,propertry);
            //    foreach (PropertyInfo prop in typeof(T).GetProperties
            //    //unbinder need at least readable property
            //   (BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
            //    {
            //        var fieldAttribute = GetARAttributeField(prop, ModelBinderAccessLevel.OnlyUnBind | ModelBinderAccessLevel.OnlyBind);
            //        if (fieldAttribute == null) continue;
            //        propertry.Add(prop.Name,fieldAttribute.DatabaseID);
            //    }
            //}
            //string formName = typeof(T).FullName;

            //get metadata
            var properties = metaProvider.GetPropertyInfoes(
                (BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance),
                null);

            //if no statictisc
            //we should invoke GetEntryList
            if (tr.HasStatictisc == false)
            {
                ARProxy <T> proxy = new ARProxy <T>((ARLoginContext)context);
                //get select
                List <uint> fieldIds = new List <uint>();

                if (tr.SelectResult != null && tr.SelectResult.SelectedProperties.Count > 0)
                {
                    foreach (var p in properties)
                    {
                        if (tr.SelectResult.SelectedProperties.Find(s => s == p.Property.Name) == null)
                        {
                            continue;
                        }
                        fieldIds.Add(p.DatabaseId);
                    }
                }
                else
                {
                    foreach (var p in properties)
                    {
                        fieldIds.Add(p.DatabaseId);
                    }
                }


                //if(tr.HasSelect && tr.SelectedProperties.Count > 0){
                //    foreach(var s in tr.SelectedProperties){
                //        fieldIds.Add(_Cache[formName][s.SourceMemberName]);
                //    }
                //}
                //else{
                //    foreach(var d in _Cache[formName])
                //        fieldIds.Add(d.Value);
                //}

                //get paged
                uint StartIndex    = 0;
                uint?RetrieveCount = null;
                if (tr.NoQueryableResult != null && tr.NoQueryableResult.HasSkip)
                {
                    StartIndex = (uint)tr.NoQueryableResult.Skip.Value;
                }
                if (tr.NoQueryableResult != null && tr.NoQueryableResult.HasTake)
                {
                    RetrieveCount = (uint)tr.NoQueryableResult.Take.Value;
                }

                //get order by
                List <ARSortInfo> sort = new List <ARSortInfo>();
                if (tr.OrderByResult != null && tr.OrderByResult.OrderByList.Count > 0)
                {
                    foreach (var p in properties)
                    {
                        var ss = tr.OrderByResult.OrderByList.Find(s => s.Property == p.Property.Name);
                        if (ss == null)
                        {
                            continue;
                        }
                        sort.Add(new ARSortInfo
                        {
                            FieldId = p.DatabaseId,
                            Order   = ss.Method == "OrderBy" ? SortOrder.SORT_ASCENDING : SortOrder.SORT_DESCENDING
                        });
                    }
                }

                IList <T> resultList = proxy.GetEntryList(
                    tr.ConditionResult == null ? null : tr.ConditionResult.Qulification.ToString(),
                    fieldIds,
                    StartIndex,
                    RetrieveCount,
                    null,
                    sort
                    );

                if (tr.SelectResult == null || tr.SelectResult.TargetType == null) //means no explict select clause
                {
                    return(resultList);
                }
                else
                {
                    Type[] typeArgs = { tr.SelectResult.TargetType, typeof(T) };
                    return((IEnumerable)Activator.CreateInstance(
                               typeof(Enumerator <,>).MakeGenericType(typeArgs),
                               resultList,
                               tr.SelectResult.SelectExpression));
                }
            }
            else if (tr.HasStatictisc && tr.StatictiscVerb == "Count")
            {
                ARProxy <T>   proxy  = new ARProxy <T>((ARLoginContext)context);
                List <UInt32> groups = null;
                var           list   = proxy.GetListEntryStatictisc(
                    tr.ConditionResult == null ? null : tr.ConditionResult.Qulification.ToString(),
                    ARStatictisc.STAT_OP_COUNT,
                    null,
                    groups);
                if (list.Count != 1)
                {
                    throw new Exception("GetListEntryStatictisc returns invalid result.");
                }
                T entry = list[0];
                return(Convert.ToInt32((entry as ARBaseForm).Statictisc));
            }
            else
            {
                throw new NotImplementedException("Group by and statictisc is not support yet.Please use ARProxy API");

                /*
                 * ARStatictisc stat = ARStatictisc.STAT_OP_COUNT;
                 * uint? targetFieldId = null;
                 * List<uint> groupByList = null;
                 *
                 * if(tr.HasStatictisc)
                 * {
                 *  switch (tr.StatictiscVerb)
                 *  {
                 *      case "Sum":
                 *          stat = ARStatictisc.STAT_OP_SUM;
                 *          break;
                 *      case "Max":
                 *          stat = ARStatictisc.STAT_OP_MAXIMUM;
                 *          break;
                 *      case "Min":
                 *          stat = ARStatictisc.STAT_OP_MINIMUM;
                 *          break;
                 *      case "Count":
                 *          stat = ARStatictisc.STAT_OP_COUNT;
                 *          break;
                 *      case "Average":
                 *          stat = ARStatictisc.STAT_OP_AVERAGE;
                 *          break;
                 *      default:
                 *          throw new NotImplementedException(tr.StatictiscVerb + " is not support.");
                 *  }
                 *
                 *  if(tr.StatictiscTarget == null && tr.StatictiscVerb != "Count")
                 *     throw new InvalidOperationException("TargetFieldId must not null if ARStat is not COUNT");
                 *
                 *  targetFieldId = _Cache[formName][tr.StatictiscTarget.SourceMemberName];
                 * }
                 *
                 * if(tr.HasGroupBy)
                 * {
                 *  groupByList = new List<uint>();
                 *  foreach(var g in tr.GroupedProperties){
                 *      groupByList.Add(_Cache[formName][g.SourceMemberName]);
                 *  }
                 * }
                 *
                 *
                 *
                 * ARProxy<T> proxy = new ARProxy<T>((ARLoginContext)context, (IARServerFactory)factory);
                 * IList<T> resultList = proxy.GetListEntryStatictisc(
                 *  tr.Qulification.ToString(),
                 *  stat,
                 *  targetFieldId,
                 *  groupByList);
                 *
                 * if (groupByList == null || groupByList.Count == 0)
                 *  return (resultList[0] as ARBaseForm).Statictisc;
                 * else
                 * {
                 *  Type[] typeArgs = { tr.GroupType, typeof(T) ,tr.TargetType };
                 *  return (IEnumerable)Activator.CreateInstance(
                 *          typeof(Groupor<,>).MakeGenericType(typeArgs),
                 *          resultList,
                 *          tr.GroupExpression);
                 *
                 *
                 * }
                 */
            }

            #region code dropped

            ////two mainly type of query
            ////one with statictisc another without statictisc
            ////the flag is tr.HasStatictisc
            //if (tr.HasStatictisc)
            //{
            //    ARStatictisc stat;
            //    switch (tr.StatictiscVerb)
            //    {
            //        case "Sum":
            //            stat = ARStatictisc.STAT_OP_SUM;
            //            break;
            //        case "Max":
            //            stat = ARStatictisc.STAT_OP_MAXIMUM;
            //            break;
            //        case "Min":
            //            stat = ARStatictisc.STAT_OP_MINIMUM;
            //            break;
            //        case "Count":
            //            stat = ARStatictisc.STAT_OP_COUNT;
            //            break;
            //        case "Average":
            //            stat = ARStatictisc.STAT_OP_AVERAGE;
            //            break;
            //        default:
            //            throw new NotImplementedException(tr.StatictiscVerb + " is not support.");

            //    }
            //    if (tr.HasGroupBy)
            //    {

            //    }
            //    else
            //    {

            //    }
            //    ARProxy<T> proxy = new ARProxy<T>((ARLoginContext)context);
            //    IList<T> list = proxy.GetListEntryStatictisc(
            //        tr.Qulification.ToString(),
            //        stat,
            //        Convert.ToUInt32(tr.StatictiscTarget.SourceMemberName),
            //        null);
            //    //two sub type of query
            //    //one with group by another without group by
            //    //the flag is tr.HasGroupBy

            //}
            //else
            //{

            //}

            //if (tr.HasGroupBy)
            //{
            //    ARProxy<T> proxy = new ARProxy<T>((ARLoginContext)context);
            //    IList<T> list = proxy.GetListEntryStatictisc(
            //        tr.Qulification.ToString(),
            //        ARStatictisc.STAT_OP_SUM,
            //        Convert.ToUInt32(tr.StatictiscTarget.SourceMemberName),
            //        null);

            //}

            //if (tr.Count)
            //{
            //    ARProxy4Linq<T> proxy = (ARProxy4Linq<T>)Activator.CreateInstance(
            //       typeof(ARProxy4Linq<T>), context, factory);
            //    return proxy.GetEntryCountByQuery(tr.Qulification.ToString());
            //}

            ////special "Select" clause apply
            //else if (tr.Select)
            //{
            //    tr.TargetType = TypeSystem.GetElementType(expression.Type);
            //    ARProxy4Linq<T> proxy = (ARProxy4Linq<T>)Activator.CreateInstance
            //        (typeof(ARProxy4Linq<T>), context, factory);

            //    return proxy.GetEntryByQuery(
            //        tr.Qulification.ToString(),
            //        tr.SelectedProperties,
            //        tr.TargetType,
            //        tr.SelectExpression
            //        );
            //}
            //else
            //{
            //    ARProxy4Linq<T> proxy = (ARProxy4Linq<T>)Activator.CreateInstance(
            //        typeof(ARProxy4Linq<T>), context, factory);
            //    return proxy.GetEntryByQuery(tr.Qulification.ToString());
            //}

            #endregion
        }
        public void ARProxy_GetListEntry_MaxEntries_Cover_notCover()
        {
            Clean();
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                NRemedy_Test_Regular_Form newentry = new NRemedy_Test_Regular_Form();
                newentry.CharacterField = TestCharacterFieldValue;
                newentry.IntegerField = 1;
                for (int i = 0; i < 588; i++)
                {
                    proxy.CreateEntry(newentry);
                }

                var results = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    null,
                    0,
                    null,
                    null);
                Assert.AreEqual(588, results.Count);

                var results2 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    300,
                    10,
                    null,
                    null);
                Assert.AreEqual(300, results2.Count);

                var results3 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    100,
                    10,
                    null,
                    null);
                Assert.AreEqual(100, results3.Count);

                for (int i = 0; i < 100; i++)
                {
                    Assert.AreEqual(results3[i].RequestID, results2[i].RequestID);

                }

                var results4 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    200,
                    400,
                    null,
                    null);
                Assert.AreEqual(188, results4.Count);

                var results5 = proxy.GetEntryList(
                    null,
                    new string[] { "RequestID" },
                    null,
                    400,
                    null,
                    null);
                Assert.AreEqual(188, results5.Count);

            }
            catch (Exception ex)
            {
                throw new Exception("env init in Construct error.", ex);
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 24
0
        public void ARProxy_GetEntryList_qulifier_fieldIds_haspage_nocount_noorder_success()
        {
            ARLoginContext context = new ARLoginContext(TestServer, TestAdmin, TestAdminPwd);
            try
            {
                //int total = -1;
                List<UInt32> fieldIds = new List<UInt32>();
                fieldIds.Add(TestCharacterFieldId);
                fieldIds.Add(TestIntFieldId);
                fieldIds.Add(1u);
                ARProxy<NRemedy_Test_Regular_Form> proxy = new ARProxy<NRemedy_Test_Regular_Form>(context);
                var retlist = proxy.GetEntryList(
                    "'Character Field' LIKE \"%你好%\"",
                    fieldIds,
                    0,
                    5,
                    null,
                    null
                    );
                //paged count should be 5,although total matched count is 11
                Assert.AreEqual(5, retlist.Count);
                //Assert.AreEqual(-1, total);
                foreach (var entry in retlist)
                {
                    Assert.AreEqual(true, entry.CharacterField.Contains("你好"));
                }

                //assert the max id is greater 4 than min id
                //which means return the continous id list
                Assert.AreEqual(4, Convert.ToInt32(retlist.Max(m => m.RequestID)) - Convert.ToInt32(retlist.Min(m => m.RequestID)));

            }
            catch (Exception ex)
            {
                Assert.AreEqual(null, ex);

            }
            finally
            {
                context.Dispose();
            }
        }