예제 #1
0
 public void Translate_to_DT_throws_TableTranslatorException_when_nested_generic_type_does_not_match()
 {
     Translator.AddProfile <GenericsProfile>();
     Translator.ApplyUpdates();
     Assert.Throws <TableTranslatorException>(() =>
                                              Translator.Translate <GenericsProfile, Generics.OneGeneric <Generics.OneGeneric <DateTime> > >(new List <Generics.OneGeneric <Generics.OneGeneric <DateTime> > >(), "NestedGeneric"));
 }
        public void Remove_profile_removes_the_correct_profile()
        {
            var basicProfile       = new BasicProfile();
            var basicProfile2      = new BasicProfile2();
            var spyProfile         = new SpyProfile();
            var defaultNameProfile = new DefaultNameProfile();

            Translator.AddProfile(basicProfile);
            Translator.AddProfile(basicProfile2);
            Translator.AddProfile(spyProfile);
            Translator.AddProfile(defaultNameProfile);

            // by generic
            Translator.RemoveProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var profiles = Translator.GetAllProfiles().ToList();

            CollectionAssert.DoesNotContain(profiles, basicProfile);
            Assert.AreEqual(3, profiles.Count());

            // by instance
            Translator.RemoveProfile(basicProfile2);
            Translator.ApplyUpdates();
            profiles = Translator.GetAllProfiles().ToList();
            CollectionAssert.DoesNotContain(profiles, basicProfile2);
            Assert.AreEqual(2, profiles.Count());

            // by profile name
            Translator.RemoveProfile(spyProfile.ProfileName);
            Translator.ApplyUpdates();
            profiles = Translator.GetAllProfiles().ToList();
            CollectionAssert.DoesNotContain(profiles, spyProfile);
            Assert.AreEqual(1, profiles.Count());
        }
        public void Add_profile_with_instance()
        {
            Translator.AddProfile(new BasicProfile());
            Translator.ApplyUpdates();

            Assert.AreEqual(1, Translator.GetProfiles(x => x.ProfileName == new BasicProfile().ProfileName).Count());
        }
        public void Translation_for_model_with_nested_generics()
        {
            var nestedGenerics = new List <Generics.OneGeneric <Generics.OneGeneric <bool> > >
            {
                new Generics.OneGeneric <Generics.OneGeneric <bool> > {
                    TData = new Generics.OneGeneric <bool> {
                        TData = true
                    }
                },
                new Generics.OneGeneric <Generics.OneGeneric <bool> > {
                    TData = new Generics.OneGeneric <bool> {
                        TData = false
                    }
                },
                new Generics.OneGeneric <Generics.OneGeneric <bool> > {
                    TData = new Generics.OneGeneric <bool> {
                        TData = true
                    }
                }
            };

            Translator.AddProfile <GenericsProfile>();
            Translator.ApplyUpdates();
            var dt = new DataTable();

            Assert.DoesNotThrow(() => dt = Translator.Translate <GenericsProfile, Generics.OneGeneric <Generics.OneGeneric <bool> > >(nestedGenerics, "NestedGeneric"));
            Assert.AreEqual(3, dt.Rows.Count);
        }
        public void Get_specific_profile_translations_returns_null_if_profile_does_not_have_translation_for_the_type_and_name()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var translation = Translator.GetProfileTranslation <BasicProfile, TestParent>("WrongName");

            Assert.IsNull(translation);
        }
        public void Get_profile_translations_for_type_returns_empty_collection_if_profile_does_not_have_translation_for_the_type()
        {
            Translator.AddProfile <BasicProfile2>();
            Translator.ApplyUpdates();
            var translations = Translator.GetProfileTranslationsForType <BasicProfile, TestParent>();

            CollectionAssert.IsEmpty(translations);
        }
        public void Translate_to_DT_table_name_is_name_of_type_with_generic_formatting_when_no_explicit_translation_name_given()
        {
            Translator.AddProfile <GenericsProfile>();
            Translator.ApplyUpdates();
            var dt = Translator.Translate <GenericsProfile, List <bool> >(new List <List <bool> >());

            Assert.AreEqual("List<Boolean>", dt.TableName);
        }
        public void Translate_to_DT_number_of_rows()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var dt = Translator.Translate <BasicProfile, TestPerson>(people, "Translation1");

            Assert.AreEqual(3, dt.Rows.Count);
        }
예제 #9
0
        public void Get_translations_using_predicate_with_no_matches_returns_empty_collection()
        {
            Translator.AddProfile(new BasicProfile());
            Translator.ApplyUpdates();
            Func <Translation, bool> pred = t => t.TranslationSettings.TranslationName == "XYZ";

            Assert.AreEqual(0, Translator.GetTranslations(pred).Count());
        }
예제 #10
0
        public void Get_translations_using_predicate()
        {
            Translator.AddProfile(new BasicProfile());
            Translator.ApplyUpdates();
            Func <Translation, bool> pred = t => t.TranslationSettings.TranslationName.IndexOf("2", StringComparison.Ordinal) < 0;

            Assert.AreEqual(3, Translator.GetTranslations(pred).Count());
        }
예제 #11
0
        public void Translate_to_DT_table_name_is_name_of_translation_when_explicit()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var dt = Translator.Translate <BasicProfile, TestPerson>(people, "Translation1");

            Assert.AreEqual("Translation1", dt.TableName);
        }
        public void Configure_is_called_during_initialization()
        {
            var spyProfile = new SpyProfile();

            Translator.AddProfile(spyProfile);
            Translator.ApplyUpdates();
            Assert.IsTrue(spyProfile.ConfigureWasCalled);
        }
        public void Translate_to_DbParameters_parameter_name_is_assigned()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var dbParam = Translator.TranslateToDbParameter <BasicProfile, TestPerson>(people,
                                                                                       new DbParameterSettings("myParam", "myDbObjectName"), "Translation1");

            Assert.AreEqual("myParam", dbParam.ParameterName);
        }
        public void Translate_to_DbParameters_table_name_is_name_of_database_object()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var dbParam = Translator.TranslateToDbParameter <BasicProfile, TestPerson>(people,
                                                                                       new DbParameterSettings("myParam", "myDbObjectName"), "Translation1");

            Assert.AreEqual("myDbObjectName", ((DataTable)dbParam.Value).TableName);
        }
예제 #15
0
        public void Get_all_translations_returns_correct_count()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.AddProfile <BasicProfile2>();
            Translator.ApplyUpdates();
            var collections = Translator.GetAllTranslations();

            Assert.AreEqual(6, collections.Count());
        }
예제 #16
0
        public void Translation_level_null_column_prefix_and_suffix_does_not_change_column_name()
        {
            Translator.AddProfile <NullPrefixSuffixProfile>();
            Translator.ApplyUpdates();

            var table = Translator.Translate <NullPrefixSuffixProfile, TestPerson>(new List <TestPerson>(), "TranslationLevelNullPrefixSuffix").GetColumnNames();

            Assert.IsTrue(!table.Any(x => x.StartsWith("TRANPRE_") && x.EndsWith("_TRANSUF")));
        }
예제 #17
0
        public void Translation_level_column_prefix_and_suffix_applied_to_all_columns_and_tranlations_specific_overrides_profile_level()
        {
            Translator.AddProfile <PrefixSuffixProfile>();
            Translator.ApplyUpdates();

            var table3 = Translator.Translate <PrefixSuffixProfile, TestPerson>(new List <TestPerson>(), "TranslationSpecific").GetColumnNames();

            Assert.IsTrue(table3.All(x => x.StartsWith("TRANPRE_") && x.EndsWith("_TRANSUF")));
        }
예제 #18
0
        public void Translation_level_null_column_prefix_and_suffix_uses_non_null_profile_level_prefix_and_suffix()
        {
            Translator.AddProfile <PrefixSuffixProfile>();
            Translator.ApplyUpdates();

            var columnNames = Translator.Translate <PrefixSuffixProfile, TestPerson>(new List <TestPerson>(), "NullTranslationSpecific").GetColumnNames();

            Assert.IsTrue(columnNames.All(x => x.StartsWith("PROFPRE_") && x.EndsWith("_PROFSUF")));
        }
예제 #19
0
        public void Translate_to_DT_allow_DbNull_only_for_nullable_types()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var cols = Translator.Translate <BasicProfile, TestPerson>(people, "Translation1").Columns;

            Assert.AreEqual(true, cols[0].AllowDBNull);
            Assert.AreEqual(false, cols[1].AllowDBNull);
        }
예제 #20
0
        public void Translate_to_DT_returns_empty_table_structure_when_source_is_null()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var dt = Translator.Translate <BasicProfile, TestPerson>(null, "Translation1");

            Assert.AreEqual(0, dt.Rows.Count);
            Assert.AreEqual(4, dt.Columns.Count);
        }
예제 #21
0
 public static void ResetTranslator()
 {
     if (!Translator.IsInitialized)
     {
         Translator.Initialize();
     }
     Translator.RemoveAllProfiles();
     Translator.ApplyUpdates();
 }
예제 #22
0
        public void Get_profile_translations_returns_translations_only_for_that_profile()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.AddProfile <BasicProfile2>();
            Translator.ApplyUpdates();
            var collections = Translator.GetProfileTranslations <BasicProfile2>();

            Assert.AreEqual(2, collections.Count());
        }
        public void Identity_column_set_to_correct_name_when_not_provided()
        {
            Translator.AddProfile <IdentityProfile>();
            Translator.ApplyUpdates();
            var columnNames = Translator.Translate <IdentityProfile, int>(new List <int> {
                1, 2, 3
            }, "GuidNoColumnNameProvided").GetColumnNames();

            Assert.AreEqual("Column0", columnNames[0]);
        }
예제 #24
0
        public void Translate_to_DT_table_name_is_name_of_type_when_no_explicit_translation_name_given()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var dt = Translator.Translate <BasicProfile, bool>(new List <bool> {
                true, false, true, false
            });

            Assert.AreEqual("Boolean", dt.TableName);
        }
예제 #25
0
        public void Get_specific_profile_translation_returns_the_correct_translation_from_the_profile()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.AddProfile <BasicProfile2>();
            Translator.ApplyUpdates();

            var translation = Translator.GetProfileTranslation <BasicProfile, TestPerson>("Translation2");

            Assert.AreEqual("Translation2", translation.TranslationSettings.TranslationName);
        }
예제 #26
0
        public void All_Members_With_Predicate()
        {
            Translator.AddProfile <AllMembersProfile>();
            Translator.ApplyUpdates();
            var colName = Translator.Translate <AllMembersProfile, AllMembersModel>(new List <AllMembersModel>(), "AllWithMPredicate").GetColumnNames();

            CollectionAssert.Contains(colName, "Name");
            CollectionAssert.Contains(colName, "IsMale");
            CollectionAssert.DoesNotContain(colName, "Age");
        }
예제 #27
0
        public void All_Members_With_Orderer()
        {
            Translator.AddProfile <AllMembersProfile>();
            Translator.ApplyUpdates();
            var colNames = Translator.Translate <AllMembersProfile, AllMembersModel>(new List <AllMembersModel>(), "AllByNameDesc").GetColumnNames();

            Assert.AreEqual("Name", colNames[0]);
            Assert.AreEqual("IsMale", colNames[1]);
            Assert.AreEqual("Age", colNames[2]);
        }
예제 #28
0
        public void All_Members_With_Binding_Flags()
        {
            Translator.AddProfile <AllMembersProfile>();
            Translator.ApplyUpdates();
            var colNames = Translator.Translate <AllMembersProfile, AllMembersModel>(new List <AllMembersModel>(), "AllNoStaticBindingFlags").GetColumnNames();

            CollectionAssert.Contains(colNames, "Name");
            CollectionAssert.Contains(colNames, "Age");
            CollectionAssert.DoesNotContain(colNames, "IsMale");
        }
예제 #29
0
        public void Get_column_configurations_returns_correct_count_when_identity_column_present()
        {
            Translator.AddProfile <ColumnConfigurationTestProfile>();
            Translator.ApplyUpdates();
            var translation = Translator.GetTranslations(x =>
                                                         x.TranslationProfile.GetType() == typeof(ColumnConfigurationTestProfile) && x.TranslationSettings.TranslationName == "WithIdentityColumn")
                              .FirstOrDefault();

            Assert.AreEqual(4, translation.GetColumnConfigurations().Count);
        }
        public void Translate_to_DbParameters_db_type_is_assigned()
        {
            Translator.AddProfile <BasicProfile>();
            Translator.ApplyUpdates();
            var dbParam = Translator.TranslateToDbParameter <BasicProfile, TestPerson>(people,
                                                                                       new DbParameterSettings("myParam", "myDbObjectName"), "Translation1");

            Assert.AreEqual(DbType.Object, dbParam.DbType);
            Assert.AreEqual(SqlDbType.Structured, ((SqlParameter)dbParam).SqlDbType);
        }