Ejemplo n.º 1
0
        public void InsertItemTest()
        {
            //Arrange
            ObservableSet<string> target = new ObservableSet<string>();
            var item = "Item";

            //Act
            target.Add(item);
            target.Add(item);

            //Assert
            Assert.AreEqual(1, target.Count);
        }
Ejemplo n.º 2
0
 public void TestAdd()
 {
     var list = new List<string> { "aaa", "bbb", "ccc" };
     var set = new ObservableSet<string>(list);
     bool propertyChangedInvoked = false;
     bool collectionChangedInvoked = false;
     Assert.AreEqual(set.Count, list.Count);
     set.PropertyChanged += (sender, e) =>
     {
         Assert.AreEqual(e.PropertyName, nameof(ObservableSet<string>.Count));
         propertyChangedInvoked = true;
     };
     set.CollectionChanged += (sender, e) =>
     {
         Assert.AreEqual(e.Action, NotifyCollectionChangedAction.Add);
         Assert.AreEqual(e.NewStartingIndex, 3);
         Assert.NotNull(e.NewItems);
         Assert.AreEqual(e.NewItems.Count, 1);
         Assert.AreEqual(e.NewItems[0], "ddd");
         collectionChangedInvoked = true;
     };
     set.Add("ddd");
     Assert.AreEqual(set[0], "aaa");
     Assert.AreEqual(set[1], "bbb");
     Assert.AreEqual(set[2], "ccc");
     Assert.AreEqual(set[3], "ddd");
     Assert.True(propertyChangedInvoked);
     Assert.True(collectionChangedInvoked);
 }
Ejemplo n.º 3
0
        public void SetOperationsTest()
        {
            const int initialCount = 15;
            const int removeItems  = 4;
            const int insertItems  = 2;
            var       items        = new[] { 40, 63, 98, 20, 24, 76, 96, 53, 5, 11, 29, 12, 46, 59, 7, 45, 86, 91, 57, 95 };
            var       indexes      = new[] { 6, 2, 5, 11, 0, 3, 13, 1 };

            var originalSet = new HashSet <Person>(items.Take(initialCount).Select(x => new Person(x)), new PersonEqualityComparer());
            var set         = new ObservableSet <Person>(originalSet);
            var sorted      = new SortedReadOnlyObservableList <Person>(set, (x, y) => x.Age.CompareTo(y.Age),
                                                                        new PersonEqualityComparer(), nameof(Person.Age));

            Assert.AreEqual(initialCount, set.Count);
            Assert.AreEqual(initialCount, sorted.Count);
            Assert.IsTrue(items.Take(initialCount).Select(x => new Person(x)).OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            foreach (var person in indexes.Take(removeItems).Select(i => new Person(items[i])))
            {
                set.Remove(person);
            }

            Assert.AreEqual(initialCount - removeItems, set.Count);
            Assert.AreEqual(initialCount - removeItems, sorted.Count);
            Assert.IsTrue(originalSet.OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            foreach (var person in items.Skip(initialCount).Take(insertItems).Select(x => new Person(x)))
            {
                set.Add(person);
            }

            Assert.AreEqual(initialCount - removeItems + insertItems, set.Count);
            Assert.AreEqual(initialCount - removeItems + insertItems, sorted.Count);
            Assert.IsTrue(originalSet.OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            foreach (var result in indexes.Skip(removeItems)
                     .Zip(items.Skip(initialCount + insertItems),
                          (i, x) => new { OldItem = new Person(items[i]), NewItem = new Person(x) }))
            {
                set.SymmetricExceptWith(new[] { result.OldItem, result.NewItem });
            }

            Assert.AreEqual(initialCount - removeItems + insertItems, set.Count);
            Assert.AreEqual(initialCount - removeItems + insertItems, sorted.Count);
            Assert.IsTrue(originalSet.OrderBy(p => p.Age).SequenceEqual(sorted, new PersonEqualityComparer()));

            set.Clear();

            Assert.AreEqual(0, set.Count);
            Assert.AreEqual(0, sorted.Count);
        }
        public void Reentrancy_SingleListener_DoesNotThrow()
        {
            bool handlerCalled = false;

            var collection = new ObservableSet <int>();

            collection.CollectionChanged += (sender, e) =>
            {
                if (!handlerCalled)
                {
                    handlerCalled = true;

                    // Single listener; does not throw.
                    collection.Add(2);
                }
            };
            collection.Add(1);

            Assert.True(handlerCalled);
            Assert.Equal(2, collection.Count);
            Assert.Equal(1, collection.ToArray()[0]);
            Assert.Equal(2, collection.ToArray()[1]);
        }
Ejemplo n.º 5
0
        public void TestAdd()
        {
            ExpectCollectionChange(NotifyCollectionChangedAction.Add, "item");
            _set.Add("item");
            ExpectChangeCalls(1);

            _set.Add("item");
            ExpectChangeCalls(0);
        }
Ejemplo n.º 6
0
        public void TestAdd()
        {
            ExpectCollectionAdd("item");
            _set.Add("item");
            ExpectChangeCalls(1);

            _set.Add("item");
            ExpectChangeCalls(0);
        }
Ejemplo n.º 7
0
        public void add_object_should_raise_collectionchanged()
        {
            int  value          = 1;
            var  observableSet  = new ObservableSet <int>();
            bool eventWasRaised = false;

            observableSet.CollectionChanged += (sender, args) =>
            {
                sender.Should().Be.EqualTo(observableSet);
                args.Action.Should().Be.EqualTo(NotifyCollectionChangedAction.Add);
                args.NewItems[0].Should().Be.EqualTo(value);
                eventWasRaised = true;
            };
            observableSet.Add(value);
            eventWasRaised.Should().Be.True();
        }
Ejemplo n.º 8
0
        public void TestIndexOf()
        {
            var list = new List <string> {
                "aaa", "bbb", "ccc"
            };
            var set = new ObservableSet <string>(list);

            Assert.Equal(0, set.IndexOf("aaa"));
            Assert.Equal(1, set.IndexOf("bbb"));
            Assert.Equal(2, set.IndexOf("ccc"));
            Assert.Equal(-1, set.IndexOf("ddd"));
            set.Add("ddd");
            Assert.Equal(3, set.IndexOf("ddd"));
            set.Remove("bbb");
            Assert.Equal(-1, set.IndexOf("bbb"));
            Assert.Equal(2, set.IndexOf("ddd"));
        }
Ejemplo n.º 9
0
        public void TestIndexOf()
        {
            var list = new List <string> {
                "aaa", "bbb", "ccc"
            };
            var set = new ObservableSet <string>(list);

            Assert.Equal(set.IndexOf("aaa"), 0);
            Assert.Equal(set.IndexOf("bbb"), 1);
            Assert.Equal(set.IndexOf("ccc"), 2);
            Assert.Equal(set.IndexOf("ddd"), -1);
            set.Add("ddd");
            Assert.Equal(set.IndexOf("ddd"), 3);
            set.Remove("bbb");
            Assert.Equal(set.IndexOf("bbb"), -1);
            Assert.Equal(set.IndexOf("ddd"), 2);
        }
Ejemplo n.º 10
0
        public DummyPluginManager(string pluginsFile, IGameMode gameMode, IMod mod)
        {
            StreamReader reader = new StreamReader(pluginsFile);

            string installationPath = Path.Combine(gameMode.GameModeEnvironmentInfo.InstallationPath, gameMode.GetModFormatAdjustedPath(mod.Format, null, false));

            string line;

            while ((line = reader.ReadLine()) != null)
            {
                if (line[0] != '#')
                {
                    m_Plugins.Add(new Plugin(Path.Combine(installationPath, line.ToLower()), line, null));
                }
            }
            ((INotifyCollectionChanged)m_Plugins).CollectionChanged += new NotifyCollectionChangedEventHandler(ActivePlugins_CollectionChanged);
            m_ROOLPlugins = new ReadOnlyObservableList <Plugin>(m_Plugins);
        }
Ejemplo n.º 11
0
        private void ReadSerial()
        {
            try
            {
                serialPort.Open();
            }
            catch (Exception e)
            {
                MessageBox.Show($"Failed to open port: {e.Message}", "Serial Inspector");
                return;
            }

            OnPropertyChanged(nameof(IsRunning));
            int errorCount = 0;

            while (keepRunning && serialPort.IsOpen && errorCount < 50)
            {
                try
                {
                    string        line    = serialPort.ReadLine();
                    SerialMessage message = SerialMessage.Parse(line, FirstChunkMath, SecondChunkMath);

                    var addItem = new Action(() => messages.Add(message));
                    Application.Current?.Dispatcher.Invoke(DispatcherPriority.Background, addItem);
                }
                catch (IOException e)
                {
                    MessageBox.Show($"I/O exception occurred: {e.Message}", "Serial Inspector");
                    break;
                }
                catch (Exception e)
                {
                    Debug.WriteLine($"An exception occurred: {e.Message}");
                    ++errorCount;
                    continue;
                }
            }

            serialPort?.Close();
            OnPropertyChanged(nameof(IsRunning));
        }
Ejemplo n.º 12
0
        public void SetOperationsTest()
        {
            var values = new[] { 15, 14, 89, 56, 8, 68, 17, 39, 31, 93, 78, 80, 87, 85, 57, 20, 6, 1 };

            var people     = new ObservableSet <Observable>(values.Select(x => new Observable(x)).ToList());
            var transfList = new DynamicTransformingReadOnlyObservableList <Observable, int>(people,
                                                                                             x => x.Subject);
            var copy = new TransformingReadOnlyObservableList <int, int>(transfList, x => x);

            Assert.AreEqual(people.Count, transfList.Count);
            Assert.IsTrue(new HashSet <int>(people.Select(x => x.Prop)).SetEquals(transfList));
            Assert.IsTrue(new HashSet <int>(people.Select(x => x.Prop)).SetEquals(copy));

            people.Add(new Observable(19));
            people.First().Prop = 82;
            people.Remove(people.Last());

            Assert.AreEqual(people.Count, transfList.Count);
            Assert.IsTrue(new HashSet <int>(people.Select(x => x.Prop)).SetEquals(transfList));
            Assert.IsTrue(new HashSet <int>(people.Select(x => x.Prop)).SetEquals(copy));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Loads the data from the Install Log file.
        /// </summary>
        private void LoadPluginLog()
        {
            if (m_ostActivePlugins != null)
            {
                m_ostActivePlugins.Clear();
            }
            else
            {
                m_ostActivePlugins = new ObservableSet <Plugin>(PluginComparer.Filename);
            }

            if (LogSerializer != null)
            {
                foreach (string strPlugin in LogSerializer.LoadPluginLog())
                {
                    if (!String.IsNullOrEmpty(strPlugin))
                    {
                        m_ostActivePlugins.Add(ManagedPluginRegistry.GetPlugin(strPlugin));
                    }
                }
            }
        }
Ejemplo n.º 14
0
        public SceneRootViewModel([NotNull] SceneEditorViewModel editor, [NotNull] SceneViewModel scene, AsyncLock loadMutex)
            : base(editor, scene, "Scene root")
        {
            this.loadMutex = loadMutex;
            sceneId        = Guid.NewGuid();

            foreach (var childScene in scene.Children)
            {
                var child = new SceneRootViewModel(editor, childScene, loadMutex)
                {
                    Parent = this
                };
                childScenes.Add(child);
            }
            AddItems(ChildScenes);
            scene.Children.CollectionChanged += SceneChildrenCollectionChanged;

            var offsetNode = Editor.NodeContainer.GetNode(scene.Asset)[nameof(scene.Asset.Offset)];

            offsetNodeBinding = new MemberGraphNodeBinding <Vector3>(offsetNode, nameof(Offset), OnPropertyChanging, OnPropertyChanged, Editor.UndoRedoService);

            LoadSettings().Forget();
        }
Ejemplo n.º 15
0
        private void OnNewMethod(MethodFacts mfacts)
        {
            mfacts.OnNewMethodCalled = true;
            MethodBase method = mfacts.Method;

            AddType(method.DeclaringType);
            IOnMethodDiscovery disc = (IOnMethodDiscovery)method.GetCustomOrInjectedAttribute(typeof(IOnMethodDiscovery));

            if (disc != null)
            {
                disc.OnDiscovery(method, EMethodDiscoveryStage.Processing);
            }
            RealizationsOf(method).AutoDo(AddMethod);
            if (mfacts.IsDecompilable)
            {
                mfacts.INVA.CalledMethods.AutoDo(AddMethod);
                mfacts.INVA.ConstructedObjects.AutoDo(AddConstructor);
                mfacts.INVA.ReferencedTypes.AutoDo(AddType);
                mfacts.INVA.ReadFields.AutoDo(OnFieldSeen);
                mfacts.INVA.WrittenFields.AutoDo(OnFieldSeen);
                mfacts.INVA.ReferencedFields.AutoDo(OnFieldSeen);
                mfacts.INVA.ElementSources
                .Where(src => src is AllocationSite)
                .Select(src => (AllocationSite)src)
                .AutoDo(src => _allocSites.Add(src));
                mfacts.INVA.Run();
                if (method is MethodInfo)
                {
                    mfacts.Realizations = RealizationsOf((MethodInfo)method).ToBufferedEnumerable();
                }
                else
                {
                    mfacts.Realizations = Enumerable.Repeat(method, 1);
                }
            }
        }
        public void ObserveSkillsGeneratesCorrectValues()
        {
            var modifiers    = CreateModifiers(6);
            var skills       = CreateSkills();
            var parseResults = CreateParseResults(modifiers);
            var expected     = new[]
            {
                new CalculatorUpdate(parseResults[0].Modifiers, new Modifier[0]),
                new CalculatorUpdate(new Modifier[0], parseResults[0].Modifiers),
            };
            var parser = MockSkillParser(skills, parseResults);
            var sut    = CreateSut(parser);
            var observableCollection = new ObservableSet <IReadOnlyList <Skill> >();

            var actual = new List <CalculatorUpdate>();

            using (sut.ObserveSkills(observableCollection).Subscribe(actual.Add))
            {
                observableCollection.Add(skills[0]);
                observableCollection.Remove(skills[0]);
            }

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 17
0
        public void add_object_should_raise_propertychanged()
        {
            int  value                    = 1;
            var  observableSet            = new ObservableSet <int>();
            bool eventWasRaisedForCount   = false;
            bool eventWasRaisedForIsEmpty = false;

            observableSet.PropertyChanged += (sender, args) =>
            {
                sender.Should().Be.EqualTo(observableSet);
                if (args.PropertyName == COUNT_PROPERTY_NAME)
                {
                    eventWasRaisedForCount = true;
                }
                if (args.PropertyName == ISEMPTY_PROPERTY_NAME)
                {
                    eventWasRaisedForIsEmpty = true;
                }
            };

            observableSet.Add(value);
            eventWasRaisedForCount.Should().Be.True();
            eventWasRaisedForIsEmpty.Should().Be.True();
        }
Ejemplo n.º 18
0
 public void TestIndexOf()
 {
     var list = new List<string> { "aaa", "bbb", "ccc" };
     var set = new ObservableSet<string>(list);
     Assert.AreEqual(set.IndexOf("aaa"), 0);
     Assert.AreEqual(set.IndexOf("bbb"), 1);
     Assert.AreEqual(set.IndexOf("ccc"), 2);
     Assert.AreEqual(set.IndexOf("ddd"), -1);
     set.Add("ddd");
     Assert.AreEqual(set.IndexOf("ddd"), 3);
     set.Remove("bbb");
     Assert.AreEqual(set.IndexOf("bbb"), -1);
     Assert.AreEqual(set.IndexOf("ddd"), 2);
 }