コード例 #1
0
        public void TestObjectAsTemplate()
        {
            InitTestObjects();
            var before = GetCountOfTestObjects();

            Assert.AreNotEqual(0, before);
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "ListSamples";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.AllProperties;
            var result = dw.DoWorkDirect <object>(dwt);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.IsNotNull(item);
            }
            var after = GetCountOfTestObjects();

            Assert.AreNotEqual(0, after);
            Assert.AreEqual(before, after);
        }
コード例 #2
0
        public void TestTransactionRollback()
        {
            InitTestObjects();
            var before = GetCountOfTestObjects();

            Assert.AreNotEqual(0, before);
            var dw   = GetDataWorker();
            var tran = dw.BeginTransaction();
            var dwt  = new DataWorkerTask();

            dwt.CommandText = "delete from TestObjects";
            dwt.CommandType = CommandType.Text;
            dwt.Transaction = tran;
            dwt.ReadResults = false;
            var result = dw.DoWorkDirect <SampleClass>(dwt);
            var during = GetCountOfTestObjects();

            tran.Rollback();
            Assert.AreNotEqual(0, dwt.RowsAffected);
            var after = GetCountOfTestObjects();

            Assert.AreNotEqual(0, after);
            Assert.AreNotEqual(before, during);
            Assert.AreNotEqual(after, during);
            Assert.AreEqual(0, during);
            Assert.AreEqual(before, after);
        }
コード例 #3
0
        public void TestInputFromWriteOnlyProperty()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "WriteOnlyInputTest";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.DataFields;
            var msg        = "Read This";
            var dataObject = new SampleClass {
                WriteOnlyProperty = msg
            };
            var result = dw.DoWorkDirect <SampleClass>(dwt, dataObject);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.IsTrue(item.ID != 0);
                Assert.IsNotNullOrEmpty(item.Name);
                Assert.AreNotEqual(msg, item.WriteOnlyPropertyOutput);
                Assert.IsNotNull(item.WriteOnlyPropertyOutput);
                Assert.AreEqual("Default Value Set In Stored Proc", item.WriteOnlyPropertyOutput);
            }
        }
コード例 #4
0
        public void TestOutputParameterDataDictionary()
        {
            InitTestObjects();
            var before = GetCountOfTestObjects();

            Assert.AreNotEqual(0, before);
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "InsertTestObject";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.Dictionary;
            var testDict = new DataDictionary();

            testDict["ID"] = 0;
            var result = dw.DoWorkDirect <SampleClass>(dwt, testDict);

            Assert.AreEqual(0, result.Count);
            Assert.AreEqual(1, dwt.RowsAffected);
            Assert.AreNotEqual(0, testDict["ID"]);
            var after = GetCountOfTestObjects();

            Assert.AreNotEqual(0, after);
            Assert.AreEqual(before + 1, after);
        }
コード例 #5
0
        public void TestOutputParameterToResultsOn()
        {
            InitTestObjects();
            var before = GetCountOfTestObjects();

            Assert.AreNotEqual(0, before);
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "ListSamples";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.Dictionary;
            dwt.ApplyOutputParametersToResults = true;              // <== Explicit inversion of default to differentiate with TestOutputParameterToResultsOff()
            var testDict = new DataDictionary();

            testDict["Feedout"] = "moo";
            var result = dw.DoWorkDirect <SampleClass>(dwt, testDict);

            Assert.AreNotEqual(0, result.Count);
            Assert.IsTrue(testDict.ContainsKey("FEEDOUT"));
            // === Expect Change in Input dictionary, AND in results
            Assert.AreEqual("moo_ex", testDict["FEEDOUT"]);
            foreach (var item in result)
            {
                Assert.AreEqual("moo_ex", item.Feedout);
            }
            Assert.AreEqual(-1, dwt.RowsAffected);
            var after = GetCountOfTestObjects();

            Assert.AreNotEqual(0, after);
            Assert.AreEqual(before, after);
        }
コード例 #6
0
        public void TestDataDictionaryInput()
        {
            InitTestObjects();
            var before = GetCountOfTestObjects();

            Assert.AreNotEqual(0, before);
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "ListSamples";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.Dictionary;
            var testDict = new DataDictionary();

            testDict["FeedToTestColumn"] = "ping";
            var result = dw.DoWorkDirect <SampleClass>(dwt, testDict);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.AreEqual("ping", item.TestColumn);
            }
            var after = GetCountOfTestObjects();

            Assert.AreNotEqual(0, after);
            Assert.AreEqual(before, after);
        }
コード例 #7
0
        public void TestInt64PrimaryKey()
        {
            InitTestObjects();
            var before = GetCountOfTestObjects();

            Assert.AreNotEqual(0, before);
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "InsertTestObjectWithReallyBigID";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.AllProperties;
            var testObject = new SampleClassPoco {
                ID = 0
            };
            var result = dw.DoWorkDirect <SampleClass>(dwt, testObject);

            Assert.AreEqual(0, result.Count);
            Assert.AreEqual(1, dwt.RowsAffected);
            Assert.AreNotEqual(0, testObject.ID);
            Assert.AreEqual(long.MaxValue, testObject.ID);
            var after = GetCountOfTestObjects();

            Assert.AreNotEqual(0, after);
            Assert.AreEqual(before + 1, after);
        }
コード例 #8
0
        public void Test_InvalidMode()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask {
                Mode        = DataWorkerMode.Invalid,
                CommandText = "select null",
                CommandType = CommandType.Text,
            };

            dw.DoWorkDirect <object>(dwt);
        }
コード例 #9
0
        public void TestListCount()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "listsamples";
            dwt.ReadResults = true;
            var result = dw.DoWorkDirect <SampleClass>(dwt);

            Assert.IsNotNull(result);
            Assert.AreNotEqual(0, result.Count);
        }
コード例 #10
0
        public void TestAffectedNoRead()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "testaffected";
            dwt.ReadResults = false;
            var result = dw.DoWorkDirect <SampleClass>(dwt);

            Assert.AreEqual(1, dwt.RowsAffected, "Expected to affect 1 row");
            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.Count);
        }
コード例 #11
0
        public void TestAffectedReadAllProps()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "testaffected";
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.AllProperties;
            var obj    = new { howmany = 2 };
            var result = dw.DoWorkDirect <SampleClass>(dwt, obj);

            Assert.AreEqual(2, dwt.RowsAffected, "Expected to affect 2 rows");
            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.Count);             // nothing returned by procedure, even though we tried to read
        }
コード例 #12
0
        public void TestOutputToReadOnlyProperty()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "select *,'bla' as ReadOnlyProperty from samples";
            dwt.CommandType = CommandType.Text;
            dwt.ReadResults = true;
            var result = dw.DoWorkDirect <SampleClass>(dwt);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.IsTrue(item.ID != 0);
                Assert.IsNotNullOrEmpty(item.Name);
            }
        }
コード例 #13
0
        public void TestAffectedReadDict()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "testaffected";
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.Dictionary;
            var dd = new DataDictionary();

            dd["howmany"] = 2;
            var result = dw.DoWorkDirect <SampleClass>(dwt, dd);

            Assert.AreEqual(2, dwt.RowsAffected, "Expected to affect 2 rows");
            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.Count);             // nothing returned by procedure, even though we tried to read
        }
コード例 #14
0
        public void TestSelectFilteredFromNormalObject()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "select * from samples where id <= @ID";
            dwt.CommandType = CommandType.Text;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.AllProperties;
            var normalObject = new SampleClassPoco {
                ID = 2
            };
            var result = dw.DoWorkDirect <SampleClass>(dwt, normalObject);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.IsTrue(item.ID <= 2);
            }
        }
コード例 #15
0
        public void TestInputFromNull()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "ListGarbage";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.DataFields;
            var result = dw.DoWorkDirect <SampleClass>(dwt, null);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.IsTrue(item.ID != 0);
                Assert.IsNotNullOrEmpty(item.Name);
                Assert.IsNotNull(item.Feedout);
                Assert.AreEqual("Default Value Set In Stored Proc", item.Feedout);
            }
        }
コード例 #16
0
        public void TestSelectFilteredConfirm()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "select * from samples where id > @x";
            dwt.CommandType = CommandType.Text;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.Dictionary;
            var dd = new DataDictionary();

            dd["x"] = 2;
            var result = dw.DoWorkDirect <SampleClass>(dwt, dd);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.IsTrue(item.ID > 2);
            }
        }
コード例 #17
0
        public void TestOptionalParamsPopulated()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "TestMissingAndNullInput";
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.AllProperties;
            var obj = new SampleClass {
                RequiredParam  = 42,                // required
                OptionalParam1 = 43,
                OptionalParam2 = null,
            };
            var result = dw.DoWorkDirect <SampleClass>(dwt, obj);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(obj.RequiredParam, result[0].RequiredParamOut);
            Assert.AreEqual(obj.OptionalParam1, result[0].OptionalParam1Out);
            Assert.AreEqual(obj.OptionalParam2, result[0].OptionalParam2Out);
        }
コード例 #18
0
        public void TestOptionalParamsUnpopulated()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "TestMissingAndNullInput";
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.AllProperties;
            var obj = new {             // using anon to force non-existance of optional params
                RequiredParam = 42,     // required
                //OptionalParam1 = , // defaults to null in db
                //OptionalParam2 = , // defaults to 41   in db
            };
            var result = dw.DoWorkDirect <SampleClass>(dwt, obj);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(obj.RequiredParam, result[0].RequiredParamOut);
            Assert.AreEqual(null, result[0].OptionalParam1Out);
            Assert.AreEqual(41, result[0].OptionalParam2Out);
        }
コード例 #19
0
        public void TestSelectColumnNameRemapping()
        {
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "ListNotSimple";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.DataFields;
            var msg        = "any message";
            var dataobject = new SampleClass {
                SimpleColumnIn = msg
            };
            var result = dw.DoWorkDirect <SampleClass>(dwt, dataobject);

            Assert.AreNotEqual(0, result.Count);
            foreach (var item in result)
            {
                Assert.IsTrue(item.ID != 0);
                Assert.IsNotNullOrEmpty(item.Name);
                Assert.AreEqual(msg, item.SimpleColumnOut);
            }
        }
コード例 #20
0
        public void TestOutputParameterAnonymousObject()
        {
            InitTestObjects();
            var before = GetCountOfTestObjects();

            Assert.AreNotEqual(0, before);
            var dw  = GetDataWorker();
            var dwt = new DataWorkerTask();

            dwt.CommandText = "InsertTestObject";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            dwt.Mode        = DataWorkerMode.AllProperties;
            var testObject = new { ID = 0 };
            var result     = dw.DoWorkDirect <SampleClass>(dwt, testObject);

            Assert.AreEqual(0, result.Count);
            Assert.AreEqual(1, dwt.RowsAffected);
            Assert.AreEqual(0, testObject.ID);             // -- Anonymous Objects are immutable
            var after = GetCountOfTestObjects();

            Assert.AreNotEqual(0, after);
            Assert.AreEqual(before + 1, after);
        }
コード例 #21
0
        //[Test] // SLOW TEST
        public void Test_DW_List_Lots_StoredProc()
        {
            var dw = GetDataWorker();

            var dwt = new DataWorkerTask();

            dwt.CommandText = "ListLotsOfRows";
            dwt.CommandType = CommandType.StoredProcedure;
            dwt.ReadResults = true;
            var startT = Environment.TickCount;
            var result = dw.DoWorkDirect <LotsClass>(dwt);
            var endT   = Environment.TickCount;

            Console.WriteLine("Query Time: {0:N} ms", endT - startT);

            Assert.IsNotNull(result);
            foreach (var element in result)
            {
                Assert.AreNotEqual(0, element.ID);
                Assert.AreNotEqual(0, element.Number);
                Assert.IsNotNullOrEmpty(element.Name);
            }
            Console.WriteLine("Total Rows: {0}", result.Count);
        }
コード例 #22
0
        public static void Main(string[] args)
        {
            try
            {
                var dwt = new DataWorkerTask();
                dwt.CommandText = "ListLotsOfRows";
                dwt.CommandType = CommandType.StoredProcedure;
                dwt.ReadResults = true;
                var startT = Environment.TickCount;
                var result = dw.DoWorkDirect <LotsClass>(dwt);
                var endT   = Environment.TickCount;
                Console.WriteLine("Query Time: {0:N} ms", endT - startT);

                Console.WriteLine("Total Rows: {0}", result.Count);

                return;

                Console.WriteLine("Lets test with some demos...");
                var baseDemo = new Demo
                {
                    Name        = string.Format("Demo to be nuked from {0:yyyy/MMM/dd HH:mm:ss}", DateTime.Now),
                    Group       = "[Nuke Group]",
                    Description = "Test Demo"
                };

                // Insert
                Say(NOTE, "Testing Insert");
                var newDemo = new Demo
                {
                    Name        = baseDemo.Name,
                    Group       = baseDemo.Group,
                    Description = baseDemo.Description,
                };
                dw.Insert(newDemo);
                Console.WriteLine("New Demo ID: {0}", newDemo.ID);

                // List
                Say(NOTE, "Testing List");
                ListDemosToScreen();

                // Fetch
                Say(NOTE, "Testing Fetches");
                Demo fetchedDemo;
                fetchedDemo = dw.Fetch(new Demo {
                    ID = 1
                });                                                          // Invokes <T>(T) with T = Demo (inferred)
                if (fetchedDemo == null)
                {
                    Say(BAD, "Fetched Demo is Null! (Expected Data to be there)");
                }
                else
                {
                    Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name);
                }

                fetchedDemo = dw.Fetch <Demo>(new Demo {
                    ID = 2
                });                                                                // Invokes <T>(T) with T = Demo (explicit)
                if (fetchedDemo == null)
                {
                    Say(BAD, "Fetched Demo is Null! (Expected Data to be there)");
                }
                else
                {
                    Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name);
                }

                fetchedDemo = dw.Fetch <Demo>(new IDObj {
                    ID = 3
                });                                                                 // Invokes <T>(object) with T = Demo
                if (fetchedDemo == null)
                {
                    Say(BAD, "Fetched Demo is Null! (Expected Data to be there)");
                }
                else
                {
                    Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name);
                }

                fetchedDemo = dw.FetchByAllProps <Demo>(new { ID = 4 });                // as Object
                if (fetchedDemo == null)
                {
                    Say(BAD, "Fetched Demo is Null! (Expected Data to be there)");
                }
                else
                {
                    Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name);
                }

                // Update
                Say(NOTE, "Testing Update");
                newDemo.Description += "!";
                dw.Update(newDemo);
                fetchedDemo = dw.Fetch(newDemo);
                if (fetchedDemo == null)
                {
                    Say(BAD, "Fetched Demo is Null! (Expected Data to be there)");
                }
                else
                {
                    Console.WriteLine("Fetched Demo Description: {0}", fetchedDemo.Description);
                }

                // Delete
                Say(NOTE, "Testing Delete");
                dw.Delete(newDemo);
                fetchedDemo = dw.Fetch(newDemo);
                if (fetchedDemo == null)
                {
                    Say(GOOD, "Fetched Demo is Null. (This is good as it was meant to be deleted)");
                }
                else
                {
                    Say(BAD, "Fetched Demo is Not Null! (Expected null as should be deleted)");
                }

                // Insert 5 more tests
                List <int> tempIDs = new List <int>();
                Say(NOTE, "Adding more test entries.");
                for (int i = 0; i < 5; i++)
                {
                    newDemo.Name += ".";
                    if (i > 2)
                    {
                        newDemo.Group += ".";
                    }
                    dw.Insert(newDemo);
                    Console.WriteLine(newDemo.ID);
                    tempIDs.Add(newDemo.ID);
                }

                Say(NOTE, "List current Demos");
                ListDemosToScreen();

                dw.DoNonQuery("DeleteDemosByGroupName", baseDemo);
                Say(NOTE, "List after DeleteDemosByGroupName");
                ListDemosToScreen();

                dw.DoNonQuery("DeleteNukeDemos");
                Say(NOTE, "List after DeleteNukeDemos");
                ListDemosToScreen();
            }
            catch (Exception exc)
            {
                Say(BAD, exc.Message);
                if (exc.InnerException != null)
                {
                    Say(BAD, exc.InnerException.Message);
                }
            }
            Console.WriteLine("<Done> Press any key to exit...");
            Console.ReadKey(true);
            Console.WriteLine("BYE");
        }