예제 #1
0
        public void DbStoredProcedureHandler_Execute()
        {
            var commander = new EchoProcedureEmulator();

            var test = new DbStoredProcedureHandler();

            test.Database        = commander.Database;
            test.OperationName   = commander.OperationName;
            test.MetadataBuilder = commander.MetadataBuilder;

            var arg1 = new AtomData("String", "The quick brown fox etc. etc.");
            var arg2 = new AtomData("Integer", 123456);
            var arg3 = new AtomData("Decimal", 3.14159m);

            var arguments = new AtomCollectionData();

            arguments.AddAtom(arg1);
            arguments.AddAtom(arg2);
            arguments.AddAtom(arg3);

            var result = test.Execute(arguments);

            var rowsets = result.RowSets.ToArray();

            Assert.AreEqual(3, rowsets.Length);

            Assert.AreEqual(arg1.Name, rowsets[0].Rows.First().Atoms.First().Name);
            Assert.AreEqual(arg2.Name, rowsets[1].Rows.First().Atoms.First().Name);
            Assert.AreEqual(arg3.Name, rowsets[2].Rows.First().Atoms.First().Name);

            Assert.AreEqual(arg1.Value, rowsets[0].Rows.First().Atoms.First().Value);
            Assert.AreEqual(arg2.Value, rowsets[1].Rows.First().Atoms.First().Value);
            Assert.AreEqual(arg3.Value, rowsets[2].Rows.First().Atoms.First().Value);
        }
예제 #2
0
        public void JsonResult_SerializeData_Good()
        {
            var data = new RowSetCollectionData();

            var rowset1 = new RowSetData();

            data.AddRowSet(rowset1);

            var row11 = new AtomCollectionData();

            row11.AddAtom(new AtomData(Name11, StringValue));
            rowset1.AddRow(row11);

            var row12 = new AtomCollectionData();

            row12.AddAtom(new AtomData(Name11, DecimalValue));
            rowset1.AddRow(row12);

            var row13 = new AtomCollectionData();

            row13.AddAtom(new AtomData(Name11, IntegerValue));
            rowset1.AddRow(row13);

            var rowset2 = new RowSetData();

            data.AddRowSet(rowset2);

            var row21 = new AtomCollectionData();

            row21.AddAtom(new AtomData(Name21, StringValue));
            row21.AddAtom(new AtomData(Name22, DecimalValue));
            row21.AddAtom(new AtomData(Name23, IntegerValue));
            rowset2.AddRow(row21);

            using (var writer = new StringWriter())
            {
                _serializer.SerializeData(writer, data);
                var text = writer.ToString();
                Console.WriteLine(text);

                Assert.AreEqual("{:[[{:}{:}{:}][{:::}]]}", Skeletonize(text, "[]{}:"));
                Assert.AreEqual(1, GetOccurrenceCount(DataName, text));
                Assert.AreEqual(0, GetOccurrenceCount(ErrorName, text));

                Assert.AreEqual(3, GetOccurrenceCount(Name11, text));
                Assert.AreEqual(1, GetOccurrenceCount(Name21, text));
                Assert.AreEqual(1, GetOccurrenceCount(Name22, text));
                Assert.AreEqual(1, GetOccurrenceCount(Name23, text));
                Assert.AreEqual(2, GetOccurrenceCount(StringValue, text));
                Assert.AreEqual(2, GetOccurrenceCount(DecimalValue.ToString(CultureInfo.InvariantCulture), text));
                Assert.AreEqual(2, GetOccurrenceCount(IntegerValue.ToString(CultureInfo.InvariantCulture), text));
            }
        }
예제 #3
0
        public void AtomCollectionData_Named()
        {
            var named1  = MakeNamedAtom();
            var named2  = MakeNamedAtom();
            var unnamed = MakeUnnamedAtom();

            var data = new AtomCollectionData();

            data.AddAtom(named1);
            AssertPlus.Throws(() => { data.AddAtom(unnamed); });
            Assert.IsNull(data[named2.Name]);
            data.AddAtom(named2);
            Assert.AreEqual(named2, data[named2.Name]);

            Assert.AreEqual(2, data.Atoms.Count());
        }
예제 #4
0
        public void AtomCollectionData_Unnamed()
        {
            var named    = MakeNamedAtom();
            var unnamed1 = MakeUnnamedAtom();
            var unnamed2 = MakeUnnamedAtom();

            var data = new AtomCollectionData();

            data.AddAtom(unnamed1);
            data.AddAtom(unnamed2);
            data.AddAtom(unnamed1);
            AssertPlus.Throws(() => { data.AddAtom(named); });
            AssertPlus.Throws(() => { var atom = data[named.Name]; });

            Assert.AreEqual(3, data.Atoms.Count());
            var atoms = data.Atoms.ToArray();

            Assert.AreEqual(unnamed1, atoms[2]);
            Assert.AreEqual(unnamed2, atoms[1]);
        }
예제 #5
0
        public void JsonResult_SerializeData_Bad()
        {
            var data = new RowSetCollectionData();

            var rowset = new RowSetData();

            data.AddRowSet(rowset);

            var row1 = new AtomCollectionData();

            row1.AddAtom(new AtomData());
            rowset.AddRow(row1);

            using (var writer = new StringWriter())
            {
                _serializer.SerializeData(writer, data);
                var text = writer.ToString();
                Console.WriteLine(text);

                Assert.AreEqual(1, GetOccurrenceCount(ErrorName, text));
            }
        }