public void GetDictionary_TwoUpdatesOneBigger_ReturnsAppropriatelyShapedDict()
        {
            //Arrange
            SelectLanguageFile("empty");
            var jfp = new JsonFileProvider(Path);

            var key1 = "greeting";
            var key2 = "approving";
            IEnumerable <TextLocalization> localizations1            = GreetingsExamplePlusIndonesian;
            IEnumerable <TextLocalization> localizations2            = AcceptExample;
            IList <CultureInfo>            containingLanguagesPlusID =
                new List <CultureInfo> {
                new CultureInfo("id")
            }.Concat(ContainingLanguages).ToList();

            //Act
            jfp.Update(key1, localizations1);
            jfp.Update(key2, localizations2);
            var dict = jfp.GetDictionary();

            //Assert
            Assert.IsTrue(dict.Keys.ToList().All(containingLanguagesPlusID.Contains));
            Assert.AreEqual(containingLanguagesPlusID.Count, dict.Count);
            VerifyDictionary(dict, key1, localizations1);
            VerifyDictionary(dict, key2, localizations2);
            Assert.AreEqual(1, dict[containingLanguagesPlusID[0]].Count);
            Assert.AreEqual(2, dict[containingLanguagesPlusID[1]].Count);
            Assert.AreEqual(2, dict[containingLanguagesPlusID[2]].Count);
            Assert.AreEqual(2, dict[containingLanguagesPlusID[3]].Count);
            Assert.AreEqual(2, dict[containingLanguagesPlusID[4]].Count);
        }
        public void GetDictionary_TwoUpdatesOneSmaller_ReturnsAppropriatelyShapedDict()
        {
            //Arrange
            SelectLanguageFile("empty");
            var jfp = new JsonFileProvider(Path);

            var key1 = "greeting";
            var key2 = "approving";
            IEnumerable <TextLocalization> localizations1 = GreetingsExampleMinusGerman;
            IEnumerable <TextLocalization> localizations2 = AcceptExample;

            //Act
            jfp.Update(key1, localizations1);
            jfp.Update(key2, localizations2);
            var dict = jfp.GetDictionary();

            //Assert
            Assert.IsTrue(dict.Keys.ToList().All(ContainingLanguages.Contains));
            Assert.AreEqual(ContainingLanguages.Count, dict.Count);
            VerifyDictionary(dict, key1, localizations1);
            VerifyDictionary(dict, key2, localizations2);
            Assert.AreEqual(2, dict[ContainingLanguages[0]].Count);
            Assert.AreEqual(2, dict[ContainingLanguages[1]].Count);
            Assert.AreEqual(1, dict[ContainingLanguages[2]].Count);
            Assert.AreEqual(2, dict[ContainingLanguages[3]].Count);
        }
        public void GetDictionary_NormalUpdateThenUpdateWithEmptyLocalizations_DictUpdatedOnce()
        {
            //Arrange
            SelectLanguageFile("empty");
            var Jfp = new JsonFileProvider(Path);

            var key1 = "greeting";
            var key2 = "approving";
            IEnumerable <TextLocalization> localizations1 = GreetingsExample;
            IEnumerable <TextLocalization> localizations2 = new List <TextLocalization>();

            //Act
            Jfp.Update(key1, localizations1);
            Jfp.Update(key2, localizations2);
            var dict = Jfp.GetDictionary();

            //Assert
            Assert.IsTrue(dict.Keys.ToList().All(ContainingLanguages.Contains));
            Assert.AreEqual(ContainingLanguages.Count, dict.Count);
            VerifyDictionary(dict, key1, localizations1);
            Assert.AreEqual(1, dict[ContainingLanguages[0]].Count);
            Assert.AreEqual(1, dict[ContainingLanguages[1]].Count);
            Assert.AreEqual(1, dict[ContainingLanguages[2]].Count);
            Assert.AreEqual(1, dict[ContainingLanguages[3]].Count);
        }
        public void LoadingFiles_Some_GetDictionaryReturnsAppropriateNumberOfEntries()
        {
            //Arrange
            SelectLanguageFile("some");
            var efp = new JsonFileProvider(Path);

            //Act
            var dict = efp.GetDictionary();

            //Assert
            Assert.AreEqual(ContainingLanguages.Count, dict.Count);
            Assert.IsTrue(AllDictionariesAreSize(dict, NumberOfEntriesInSomeFile));
        }
        public void GetDictionary_NoUpdate_ReturnDictHasEmptyInnerDicts()
        {
            //Arrange
            SelectLanguageFile("empty");
            var jfp = new JsonFileProvider(Path);

            //Act
            var dict = jfp.GetDictionary();

            //Assert
            Assert.IsTrue(dict.Keys.ToList().All(ContainingLanguages.Contains));
            Assert.AreEqual(ContainingLanguages.Count, dict.Count);

            Assert.AreEqual(0, dict[ContainingLanguages[0]].Count);
            Assert.AreEqual(0, dict[ContainingLanguages[1]].Count);
            Assert.AreEqual(0, dict[ContainingLanguages[2]].Count);
            Assert.AreEqual(0, dict[ContainingLanguages[3]].Count);
        }
        public void GetDictionary_NormalUpdate_ReturnsUpdatedDict()
        {
            //Arrange
            SelectLanguageFile("empty");
            var jfp = new JsonFileProvider(Path);

            var key = "greeting";
            IEnumerable <TextLocalization> localizations = GreetingsExample;

            //Act
            jfp.Update(key, localizations);
            var dict = jfp.GetDictionary();

            //Assert
            Assert.IsTrue(dict.Keys.ToList().All(ContainingLanguages.Contains));
            Assert.AreEqual(ContainingLanguages.Count, dict.Count);
            VerifyDictionary(dict, key, localizations);
            Assert.AreEqual(1, dict[ContainingLanguages[0]].Count);
            Assert.AreEqual(1, dict[ContainingLanguages[1]].Count);
            Assert.AreEqual(1, dict[ContainingLanguages[2]].Count);
            Assert.AreEqual(1, dict[ContainingLanguages[3]].Count);
        }