Merge pull request #3796 from ntherning/windows-backend-for-MemoryMappedFile
[mono.git] / mcs / class / System.Data.Linq / src / DbLinq / Test / Providers / ReadTests_EntitySet.cs
index d0c3eb620bee8534595e2270b0727cd67a1b63e5..16a0b0a7ba0b478dd10b0d763fce6ab91634f70a 100644 (file)
@@ -16,30 +16,25 @@ using DataLoadOptions = DbLinq.Data.Linq.DataLoadOptions;
 \r
 using nwind;\r
 \r
+// test ns \r
 #if MYSQL\r
-namespace Test_NUnit_MySql\r
+    namespace Test_NUnit_MySql\r
+#elif ORACLE && ODP\r
+    namespace Test_NUnit_OracleODP\r
 #elif ORACLE\r
-#if ODP\r
-        namespace Test_NUnit_OracleODP\r
-#else\r
-        namespace Test_NUnit_Oracle\r
-#endif\r
+    namespace Test_NUnit_Oracle\r
 #elif POSTGRES\r
     namespace Test_NUnit_PostgreSql\r
 #elif SQLITE\r
     namespace Test_NUnit_Sqlite\r
 #elif INGRES\r
     namespace Test_NUnit_Ingres\r
+#elif MSSQL && L2SQL\r
+    namespace Test_NUnit_MsSql_Strict\r
 #elif MSSQL\r
-#if MONO_STRICT\r
-namespace Test_NUnit_MsSql_Strict\r
-#else\r
-namespace Test_NUnit_MsSql\r
-#endif\r
+    namespace Test_NUnit_MsSql\r
 #elif FIREBIRD\r
     namespace Test_NUnit_Firebird\r
-#else\r
-    #error unknown target\r
 #endif\r
 {\r
     [TestFixture]\r
@@ -58,16 +53,19 @@ namespace Test_NUnit_MsSql
         {\r
             var db = CreateDB();\r
             var customer = db.Customers.First();\r
-            Assert.Greater(customer.Orders.Count, 0);\r
+            AssertHelper.Greater(customer.Orders.Count, 0);\r
         }\r
 \r
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))\r
+        [Explicit]\r
+#endif\r
         [Test]\r
         public void EntitySetEnumerationProjection()\r
         {\r
             var db = CreateDB();\r
             var results = (from c in db.Customers select c.Orders).ToList();\r
 \r
-            Assert.Greater(results.Count, 0);\r
+            AssertHelper.Greater(results.Count, 0);\r
         }\r
 \r
         [Test]\r
@@ -100,7 +98,7 @@ namespace Test_NUnit_MsSql
             var db = CreateDB();\r
             var customer = db.Customers.First();\r
 \r
-            Assert.Greater(customer.Orders.Count, 0, "#1");\r
+            AssertHelper.Greater(customer.Orders.Count, 0, "#1");\r
             Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");\r
             customer.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());\r
         }\r
@@ -138,7 +136,7 @@ namespace Test_NUnit_MsSql
             int ordersCount = (from cust in db.Customers\r
                                select cust.Orders.Count).First();\r
 \r
-            Assert.Greater(ordersCount, 0);\r
+            AssertHelper.Greater(ordersCount, 0);\r
 \r
             var customer2 = db.Customers.First();\r
             customer2.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());\r
@@ -146,6 +144,9 @@ namespace Test_NUnit_MsSql
         }\r
 \r
 \r
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))\r
+        [Explicit]\r
+#endif\r
         [Test]\r
         public void Refresh01()\r
         {\r
@@ -153,16 +154,19 @@ namespace Test_NUnit_MsSql
             var c = db.Customers.First();\r
 \r
             int beforeCount = c.Orders.Count;\r
-            Assert.Greater(beforeCount, 0);\r
+            AssertHelper.Greater(beforeCount, 0);\r
             c.Orders.Clear();\r
             Assert.AreEqual(c.Orders.Count, 0);\r
             c.Orders.AddRange(db.Orders);\r
-            Assert.Greater(c.Orders.Count, beforeCount);\r
+            AssertHelper.Greater(c.Orders.Count, beforeCount);\r
             db.Refresh(RefreshMode.OverwriteCurrentValues, c.Orders);\r
 \r
             Assert.AreEqual(c.Orders.Count, beforeCount);\r
         }\r
 \r
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))\r
+        [Explicit]\r
+#endif\r
         [Test]\r
         public void Refresh02()\r
         {\r
@@ -170,13 +174,13 @@ namespace Test_NUnit_MsSql
             var c = db.Customers.First();\r
 \r
             int beforeCount = c.Orders.Count;\r
-            Assert.Greater(beforeCount, 0);\r
+            AssertHelper.Greater(beforeCount, 0);\r
             c.Orders.Clear();\r
             Assert.AreEqual(c.Orders.Count, 0);\r
             c.Orders.AddRange(db.Orders);\r
 \r
             int middleCount = c.Orders.Count;\r
-            Assert.Greater(c.Orders.Count, beforeCount);\r
+            AssertHelper.Greater(c.Orders.Count, beforeCount);\r
 \r
             db.Refresh(RefreshMode.KeepCurrentValues, c.Orders);\r
             Assert.AreEqual(c.Orders.Count, middleCount);\r
@@ -186,6 +190,9 @@ namespace Test_NUnit_MsSql
         }\r
 \r
 \r
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))\r
+        [Explicit]\r
+#endif\r
         [Test]\r
         public void Refresh03()\r
         {\r
@@ -200,6 +207,9 @@ namespace Test_NUnit_MsSql
             Assert.AreNotEqual(order.CustomerID, newcustomerId);\r
         }\r
 \r
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))\r
+        [Explicit]\r
+#endif\r
         [Test]\r
         public void Refresh04()\r
         {\r
@@ -222,33 +232,63 @@ namespace Test_NUnit_MsSql
         public void ListChangedEvent()\r
         {\r
             var db = CreateDB();\r
-            var customer = db.Customers.First();\r
+            var customer = db.Customers.Where(c => c.Orders.Count > 0).First();\r
+            AssertHelper.Greater(customer.Orders.Count, 0);\r
             bool ok;\r
-            customer.Orders.ListChanged += delegate { ok = true; };\r
+            System.ComponentModel.ListChangedEventArgs args = null;\r
+            customer.Orders.ListChanged += delegate(object sender, System.ComponentModel.ListChangedEventArgs a) \r
+                { \r
+                    ok = true; \r
+                    args = a; \r
+                };\r
 \r
             ok = false;\r
+            args = null;\r
             customer.Orders.Remove(customer.Orders.First());\r
             Assert.IsTrue(ok);\r
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemDeleted, args.ListChangedType);\r
+            Assert.AreEqual(0, args.NewIndex);\r
+            Assert.AreEqual(-1, args.OldIndex);\r
 \r
             ok = false;\r
+            args = null;\r
             customer.Orders.Assign(Enumerable.Empty<Order>());\r
             Assert.IsTrue(ok);\r
+            Assert.AreEqual(System.ComponentModel.ListChangedType.Reset, args.ListChangedType);\r
+            Assert.AreEqual(0, args.NewIndex);\r
+            Assert.AreEqual(-1, args.OldIndex);\r
 \r
             ok = false;\r
-            customer.Orders.Add(db.Orders.First(o => !customer.Orders.Contains(o)));\r
+            args = null;\r
+            customer.Orders.Add(db.Orders.First());\r
             Assert.IsTrue(ok);\r
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemAdded, args.ListChangedType);\r
+            Assert.AreEqual(0, args.NewIndex);\r
+            Assert.AreEqual(-1, args.OldIndex);\r
 \r
             ok = false;\r
+            args = null;\r
             customer.Orders.Clear();\r
             Assert.IsTrue(ok);\r
+            Assert.AreEqual(System.ComponentModel.ListChangedType.Reset, args.ListChangedType);\r
+            Assert.AreEqual(0, args.NewIndex);\r
+            Assert.AreEqual(-1, args.OldIndex);\r
 \r
             ok = false;\r
+            args = null;\r
             customer.Orders.Insert(0, new Order());\r
             Assert.IsTrue(ok);\r
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemAdded, args.ListChangedType);\r
+            Assert.AreEqual(0, args.NewIndex);\r
+            Assert.AreEqual(-1, args.OldIndex);\r
 \r
             ok = false;\r
+            args = null;\r
             customer.Orders.RemoveAt(0);\r
             Assert.IsTrue(ok);\r
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemDeleted, args.ListChangedType);\r
+            Assert.AreEqual(args.NewIndex, 0);\r
+            Assert.AreEqual(args.OldIndex, -1);\r
         }\r
 \r
         [Test]\r
@@ -274,6 +314,9 @@ namespace Test_NUnit_MsSql
             Assert.IsFalse(customer.Orders.IsDeferred);\r
         }\r
 \r
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))\r
+        [Explicit]\r
+#endif\r
         [Test]\r
         public void DeferedExecutionAndLoadWith()\r
         {\r
@@ -292,9 +335,7 @@ namespace Test_NUnit_MsSql
         {\r
             var db = CreateDB();\r
             var customer = db.Customers.First();\r
-            Assert.AreEqual("jacques", customer.ContactName, "#1");\r
             int beforeCount = customer.Orders.Count;\r
-            Assert.AreEqual(1, beforeCount, "#2");\r
             var order = new Order();\r
             customer.Orders.Add(order);\r
             Assert.AreEqual(beforeCount + 1, customer.Orders.Count, "#3");\r
@@ -308,9 +349,6 @@ namespace Test_NUnit_MsSql
         {\r
             var db = CreateDB();\r
             var customer = db.Customers.First();\r
-            Assert.AreEqual("jacques", customer.ContactName, "#1");\r
-            int beforeCount = customer.Orders.Count;\r
-            Assert.AreEqual(1, beforeCount, "#2");\r
             var order = new Order();\r
             ((IList)customer.Orders).Add(order);\r
             ((IList)customer.Orders).Add(order); // raises ArgumentOutOfRangeException for duplicate\r
@@ -347,12 +385,17 @@ namespace Test_NUnit_MsSql
         {\r
             var db = CreateDB();\r
             var customer = db.Customers.First();\r
+            Assert.IsTrue(customer.Orders.IsDeferred);\r
             int beforeCount = customer.Orders.Count;\r
+            Assert.IsFalse(customer.Orders.IsDeferred);\r
 \r
             if (beforeCount == 0)\r
                 Assert.Ignore();\r
 \r
-            customer.Orders.Remove(customer.Orders.First());\r
+            Assert.IsFalse(customer.Orders.Remove(null));\r
+            Assert.AreEqual(beforeCount, customer.Orders.Count);\r
+\r
+            Assert.IsTrue(customer.Orders.Remove(customer.Orders.First()));\r
             Assert.AreEqual(customer.Orders.Count, beforeCount - 1);\r
         }\r
 \r