Example #1
0
        public void DontFailIfNoLocales()
        {
            // arrange
            var test     = new LocalizedStringVariable(new Dictionary <string, string>());
            var language = createTestLanguage(0);

            // act & assert
            Assert.DoesNotThrow(() => { test.GetValue(language); });
            Assert.DoesNotThrow(() => { test.GetValue(language.Culture); });
        }
Example #2
0
        public void FailIfMissingLocale()
        {
            // arrange
            var test = new LocalizedStringVariable(new Dictionary <string, string>
            {
                { "c1", "Value 1" },
                { "c2", "Value 2" },
            });
            var language = createTestLanguage(0);

            // act & assert
            var error = Assert.Throws <AbsentLocaleException>(() => { test.GetValue(language); });

            Assert.AreEqual("c0", error.Locale);
            error = Assert.Throws <AbsentLocaleException>(() => { test.GetValue(language.Culture); });
            Assert.AreEqual("c0", error.Locale);
        }
Example #3
0
        public void TestVariableStrings()
        {
            // arrange
            var test = new LocalizedStringVariable(new Dictionary <string, string>
            {
                { "c1", "Value 1" },
                { "c2", "Value 2" },
            });
            var language1 = createTestLanguage(1);
            var language2 = createTestLanguage(2);

            // act
            string value1language = test.GetValue(language1);
            string value2language = test.GetValue(language2);
            string value1culture  = test.GetValue(language1.Culture);
            string value2culture  = test.GetValue(language2.Culture);

            // assert
            Assert.AreEqual("Value 1", value1language);
            Assert.AreEqual("Value 2", value2language);
            Assert.AreEqual("Value 1", value1culture);
            Assert.AreEqual("Value 2", value2culture);
        }
Example #4
0
        public SemanticNetwork(ILanguage language)
        {
            Modules = new Dictionary <String, IExtensionModule>();

            var name = new LocalizedStringVariable();

            name.SetLocale(language.Culture, Strings.NewKbName);
            Name = name;

            var systemContext = new SystemContext(language);

            var concepts = new EventCollection <IConcept>();

            concepts.ItemRemoved += (sender, args) =>
            {
                foreach (var statement in Statements.Where(r => r.GetChildConcepts().Contains(args.Item)).ToList())
                {
                    Statements.Remove(statement);
                }
            };
            Concepts = concepts;

            var statements = new EventCollection <IStatement>();

            statements.ItemAdded += (sender, args) =>
            {
                if (args.Item.Context == null)
                {
                    var context = Context as IContext ?? systemContext;
                    args.Item.Context = context;
                }
                args.Item.Context.Scope.Add(args.Item);

                foreach (var concept in args.Item.GetChildConcepts())
                {
                    if (!Concepts.Contains(concept))
                    {
                        Concepts.Add(concept);
                    }
                }
            };
            statements.ItemRemoved += (sender, args) =>
            {
                if (args.Item.Context == Context || args.Item.Context == systemContext)
                {
                    args.Item.Context.Scope.Remove(args.Item);
                    args.Item.Context = null;
                }
            };
            Statements = statements;

            Context = systemContext.Instantiate(this);

            EventHandler <CancelableItemEventArgs <IStatement> > systemStatementProtector = (sender, args) =>
            {
                if (args.Item.Context != null && args.Item.Context.IsSystem)
                {
                    args.IsCanceled = true;
                }
            };

            statements.ItemAdding   += systemStatementProtector;
            statements.ItemRemoving += systemStatementProtector;
        }