It occurs to me that eventually we will want to add support for
additional SQL providers [0].

This isn't difficult, but it is annoying, as the tests are full of
conditional compilation logic to switch between the various providers,
change the namespace name, etc.:

        #if MYSQL
        namespace Test_NUnit_MySql
        #elif ORACLE
        #if ODP
                namespace Test_NUnit_OracleODP
        #else
                namespace Test_NUnit_Oracle
        #endif

Changing ~58 files to add new conditional compilation logic for each
provider doesn't strike me as a "fun time."

Thus, two questions:

1. Is there any reason to change the namespace based on the assembly
it's going into?  I don't understand why the above is done ~everywhere,
just to change the namespace of the tests, as they're going to be in
separate assemblies anyway.

Ideally, we could remove this conditional compilation logic and just use
the same namespace for everything.

2. TestBase.cs is more complicated, as it wants to define the
XSqlConnection, XSqlCommand, and xint types for each provider.

xint doesn't seem to actually be used, so it should be removed.

XSqlConnection and XSqlCommand are a little harder to remove, but there
is a simple solution: partial classes.

We could "abstract" out TestBase to depend upon members/properties based
upon interfaces instead of concrete types, e.g. code would assume the
presence of a `IDbConnection CreateConnection(string)' method, and use
CreateConnection(connStr) instead of `new XSqlConnection(connStr)'.

Next, each Test project could supply the "other half" of TestBase,
providing the SQL provider-specific members which TestBase uses, e.g.:

        IDbConnection CreateConnection(string s)
        {
            return new SqliteConnection(s);
        }

This should allow removing most of the conditional logic within TestBase
to be removed, moving provider-specific logic into the provider-specific
projects.

Thoughts?

 - Jon

[0] Offhand, SQL Server Compact Edition and Mono.Data.Sqlite, if we
don't want to wholesale migrate from System.Data.SQLite to
Mono.Data.Sqlite (see previous email).


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DbLinq" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/dblinq?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to