public void ProviderConnectionStringConstructorTest2([DataSources(false)] string context) { using (var db = (TestDataConnection)GetDataContext(context)) using (var db1 = new DataContext(db.DataProvider.Name, "BAD")) { if (!TestProvName.IsiSeriesAccessClient(context)) { Assert.Throws(typeof(ArgumentException), () => db1.GetTable <Child>().ToList()); } #if NETFRAMEWORK else { Assert.Throws(typeof(IBM.Data.DB2.iSeries.iDB2InvalidConnectionStringException), () => db1.GetTable <Child>().ToList()); } #endif } }
public void DB2Test([IncludeDataSources(ProviderName.DB2)] string context) { using (var conn = new DataConnection(context)) { var sp = conn.DataProvider.GetSchemaProvider(); var dbSchema = sp.GetSchema(conn); var table = dbSchema.Tables.Single(t => t.IsDefaultSchema && t.TableName == "ALLTYPES"); if (TestProvName.IsiSeries(context)) { var binaryType = TestProvName.IsiSeriesAccessClient(context) ? "BINARY(20)" : "BINARY"; Assert.That(table.Columns.Single(c => c.ColumnName == "BINARYDATATYPE").ColumnType, Is.EqualTo(binaryType)); Assert.That(table.Columns.Single(c => c.ColumnName == "VARBINARYDATATYPE").ColumnType, Is.EqualTo("VARBIN")); } else { Assert.That(table.Columns.Single(c => c.ColumnName == "BINARYDATATYPE").ColumnType, Is.EqualTo("CHAR (5) FOR BIT DATA")); Assert.That(table.Columns.Single(c => c.ColumnName == "VARBINARYDATATYPE").ColumnType, Is.EqualTo("VARCHAR (5) FOR BIT DATA")); } } }
public void CharTrimming([DataSources(TestProvName.AllInformix)] string context) { using (var db = GetDataContext(context)) { var lastId = db.GetTable <CharTestTable>().Select(_ => _.Id).Max(); try { var testData = GetCharData(context); foreach (var record in testData) { var query = db.GetTable <CharTestTable>().Value(_ => _.NChar, record.NChar); if (!SkipChar(context)) { query = query.Value(_ => _.Char, record.Char); } if (context.Contains(ProviderName.Firebird)) { query = db.GetTable <CharTestTable>().Value(_ => _.Char, record.Char); } query.Insert(); } var records = db.GetTable <CharTestTable>().Where(_ => _.Id > lastId).OrderBy(_ => _.Id).ToArray(); Assert.AreEqual(testData.Length, records.Length); for (var i = 0; i < records.Length; i++) { if (context.StartsWith(ProviderName.SapHana)) { // SAP or provider trims space and we return default value, which is \0 for char // or we insert it incorrectly? if (testData[i].Char == ' ') { Assert.AreEqual('\0', records[i].Char); } else { Assert.AreEqual(testData[i].Char, records[i].Char); } if (testData[i].NChar == ' ') { Assert.AreEqual('\0', records[i].NChar); } else { Assert.AreEqual(testData[i].NChar, records[i].NChar); } continue; } if (!SkipChar(context)) { if (context.Contains("Sybase")) { Assert.AreEqual(testData[i].Char == '\0' ? ' ' : testData[i].Char, records[i].Char); } else { Assert.AreEqual(testData[i].Char, records[i].Char); } } if (TestProvName.IsiSeriesOleDb(context) && i == 18) { Assert.AreEqual('\0', records[i].NChar); } else if (context == ProviderName.MySql || context == ProviderName.MySql + ".LinqService" || context == ProviderName.MySqlConnector || context == ProviderName.MySqlConnector + ".LinqService" || context == TestProvName.MySql55 || context == TestProvName.MySql55 + ".LinqService" || context == TestProvName.MariaDB || context == TestProvName.MariaDB + ".LinqService" || TestProvName.IsiSeries(context) ) { // for some reason mysql doesn't insert space Assert.AreEqual(testData[i].NChar == ' ' ? '\0' : testData[i].NChar, records[i].NChar); } else if (!context.Contains(ProviderName.Firebird)) { if (context.Contains("Sybase") || TestProvName.IsiSeriesAccessClient(context)) { Assert.AreEqual(testData[i].NChar == '\0' ? ' ' : testData[i].NChar, records[i].NChar); } else { Assert.AreEqual(testData[i].NChar, records[i].NChar); } } } } finally { db.GetTable <CharTestTable>().Where(_ => _.Id > lastId).Delete(); } } }