public static void RandomlyChangeParameterInTwoCollections <T1, T2, U>(Func <IActiveList <T1>, IActiveList <T2>, IActiveValue <IntegerTestClass>, IActiveList <U> > activeExpression, Func <IReadOnlyList <T1>, IReadOnlyList <T2>, IntegerTestClass, IEnumerable <U> > linqExpression, Func <T1> randomValueGenerator1, Func <T2> randomValueGenerator2, bool useSetComparison = false, Func <U, object> keySelector = null)
        {
            RandomGenerator.ResetRandomGenerator();

            var list1 = new ObservableList <T1>();
            var list2 = new ObservableList <T2>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                list1.Add(list1.Count, randomValueGenerator1.Invoke());
                list2.Add(list2.Count, randomValueGenerator2.Invoke());
            }

            var parameter = new ActiveValue <IntegerTestClass>()
            {
                Value = new IntegerTestClass()
                {
                    Property = 1
                }
            };
            var sut       = activeExpression.Invoke(list1.ToActiveList(), list2.ToActiveList(), parameter);
            var watcher   = new CollectionSynchronizationWatcher <U>(sut);
            var validator = new LinqValidator <T1, T2, U>(list1, list2, sut, (l1, l2) => linqExpression.Invoke(l1, l2, parameter.Value), useSetComparison, keySelector);

            foreach (var value in Enumerable.Range(0, 30))
            {
                parameter.Value.Property = RandomGenerator.GenerateRandomInteger(1, 11);
                validator.Validate();
            }
        }
        public static void RandomlyChangeParameter <T, U>(Func <IActiveList <T>, IActiveValue <IntegerTestClass>, IActiveValue <U> > activeExpression, Func <IReadOnlyList <T>, IntegerTestClass, U> linqExpression, Func <T> randomValueGenerator, Func <int> parameterRandomValueGenerator, Func <U, U, bool> comparer = null)
        {
            RandomGenerator.ResetRandomGenerator();

            var list = new ObservableList <T>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                list.Add(list.Count, randomValueGenerator.Invoke());
            }

            var parameter = new ActiveValue <IntegerTestClass>()
            {
                Value = new IntegerTestClass()
                {
                    Property = 1
                }
            };
            var sut = activeExpression.Invoke(list.ToActiveList(), parameter);

            foreach (var value in Enumerable.Range(0, 30))
            {
                parameter.Value.Property = parameterRandomValueGenerator.Invoke();
                ValidateResult(sut, linqExpression.Invoke(list, parameter.Value), comparer);
            }
        }
        public static void RandomlyChangeParameter <T, U>(Func <IActiveList <T>, IActiveValue <IntegerTestClass>, IActiveList <U> > activeExpression, Func <IReadOnlyList <T>, IntegerTestClass, IEnumerable <U> > linqExpression, Func <T> randomValueGenerator, bool useSetComparison = false, Func <U, object> keySelector = null, Func <U, U, bool> additonalComparer = null)
        {
            RandomGenerator.ResetRandomGenerator();

            var list = new ObservableList <T>();

            foreach (var value in Enumerable.Range(0, 100))
            {
                list.Add(list.Count, randomValueGenerator.Invoke());
            }

            var parameter = new ActiveValue <IntegerTestClass>()
            {
                Value = new IntegerTestClass()
                {
                    Property = 1
                }
            };
            var sut       = activeExpression.Invoke(list.ToActiveList(), parameter);
            var watcher   = new CollectionSynchronizationWatcher <U>(sut);
            var validator = new LinqValidator <T, T, U>(list, sut, l => linqExpression.Invoke(l, parameter.Value), useSetComparison, keySelector, additonalComparer);

            foreach (var value in Enumerable.Range(0, 30))
            {
                parameter.Value.Property = RandomGenerator.GenerateRandomInteger(1, 11);
                validator.Validate();
            }
        }
예제 #4
0
        public void EqualInitially()
        {
            var value = new ActiveValue <IEnumerable <int> >(new[] { 1, 2, 3 });

            var sut = value.ToActiveList().ActiveTranslateResetNotifications();

            Assert.True(value.Value.SequenceEqual(sut));
        }
        public void ExecutesImmediately()
        {
            var value = ActiveValue.Create(new IntegerTestClass());

            var sut = value.ActiveDo(o => o.SetProperty(10));

            Assert.Equal(10, sut.Value.Property);
        }
        public void InitialValueIsCorrect()
        {
            var value = ActiveValue.Create(10);

            var sut = value.ActiveAggregate(1, (currentValue, newValue) => currentValue + newValue);

            Assert.Equal(11, sut.Value);
        }
예제 #7
0
        public IEnumerable <IntegratedReport> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <IntegratedReport>();
            var query      = this.GetIntegratedReportQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var integratedReport = new IntegratedReport
                        {
                            Name   = reader["Name"] as string,
                            Title  = reader["Title"] as string,
                            Viewer = reader["Viewer"] as string
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            integratedReport.State = ComponentState.Active;
                        }
                        else
                        {
                            integratedReport.State = ComponentState.Closed;
                        }

                        integratedReport.CalculationText = reader["CalculationText"] as string;
                        if (integratedReport.CalculationText == null)
                        {
                            integratedReport.CalculationText = string.Empty;
                        }

                        if (reader["TemplateText"] is byte[] templateValue)
                        {
                            integratedReport.TemplateText = Encoding.GetEncoding(1251).GetString(templateValue);
                        }
                        else
                        {
                            integratedReport.TemplateText = string.Empty;
                        }

                        integratedReport.ReferenceName = reader["ReferenceName"] as string;

                        components.Add(integratedReport);
                    }
                }
            }
            return(components);
        }
예제 #8
0
        public void AddMultiple()
        {
            var value = new ActiveValue <IEnumerable <int> >(new[] { 1, 2, 4, 6, 7, 8 });

            var sut = value.ToActiveList().ActiveTranslateResetNotifications();

            value.Value = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            Assert.True(value.Value.SequenceEqual(sut));
        }
예제 #9
0
        public void AddWithDuplicates()
        {
            var value = new ActiveValue <IEnumerable <int> >(new[] { 1, 1, 2 });

            var sut = value.ToActiveList().ActiveTranslateResetNotifications();

            value.Value = new[] { 0, 0, 1, 1, 1, 2, 2 };

            Assert.True(value.Value.SequenceEqual(sut));
        }
예제 #10
0
        public void RemoveAll()
        {
            var value = new ActiveValue <IEnumerable <int> >(new[] { 0 });

            var sut = value.ToActiveList().ActiveTranslateResetNotifications();

            value.Value = new int[0];

            Assert.True(value.Value.SequenceEqual(sut));
        }
예제 #11
0
        public void InsertInMiddle()
        {
            var value = new ActiveValue <IEnumerable <int> >(new[] { 1, 2, 4, 5 });

            var sut = value.ToActiveList().ActiveTranslateResetNotifications();

            value.Value = new[] { 1, 2, 3, 4, 5 };

            Assert.True(value.Value.SequenceEqual(sut));
        }
        public void ExecutesOnValuePropertyChange()
        {
            var value = ActiveValue.Create(new IntegerTestClass());

            var sut = value.ActiveDo(o => o.SetProperty(o.Key));

            value.Value.Key = 10;

            Assert.Equal(10, sut.Value.Property);
        }
예제 #13
0
        public IEnumerable <RouteBlock> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <RouteBlock>();

            var query = this.GetRouteBlockQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var routeBlock = new RouteBlock
                        {
                            Name  = reader["Name"] as string,
                            Title = reader["Title"] as string
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            routeBlock.State = ComponentState.Active;
                        }
                        else
                        {
                            routeBlock.State = ComponentState.Closed;
                        }
                        if (Enum.TryParse(reader["BaseBlockType"] as string, out RouteBlockType blockType))
                        {
                            routeBlock.BaseBlockType = blockType;
                        }
                        else
                        {
                            routeBlock.BaseBlockType = RouteBlockType.Unknown;
                        }
                        if (reader["Properties"] is byte[] blockDescriptionRawData)
                        {
                            var blockDescription = Encoding.GetEncoding(1251).GetString(blockDescriptionRawData);
                            if (!string.IsNullOrWhiteSpace(blockDescription))
                            {
                                var description = WorkflowDescriptionParser.Parse(blockDescription);
                                routeBlock.WorkflowBlock = description.Blocks.FirstOrDefault();
                            }
                        }
                        components.Add(routeBlock);
                    }
                }
            }
            return(components);
        }
예제 #14
0
        private static void GenerateFileForMySql()
        {
            var active = new ActiveValue
            {
                Id              = 1,
                RecordId        = 1,
                RecordIndex     = 0,
                RecordTimeTicks = DateTime.Now.Ticks,
                Voltage_AN      = 221.51,
                Voltage_BN      = 222.15,
                Voltage_CN      = 218.50,
                Voltage_NG      = 1.25,
                Current_A       = 13.56,
                Current_B       = 15.64,
                Current_C       = 16.44,
                Frequency       = 50.125
            };
            var props = typeof(ActiveValue).GetProperties();

            using (var file = File.CreateText("d:\\power_activeValues.txt"))
            {
                for (var i = 0; i < 345600; i++)
                {
                    foreach (var t in props)
                    {
                        if ((!t.PropertyType.IsPrimitive && t.PropertyType != typeof(Guid)) ||
                            t.Name == "RecordTime" ||
                            t.Name == "ModelState" ||
                            t.Name == "IsNew")
                        {
                            continue;
                        }
                        string value;
                        //Debug.Write($"{props[j].Name}\r\n");
                        if (t.PropertyType == typeof(bool))
                        {
                            value = (bool)t.GetValue(active) ? "1" : "0";
                        }
                        else
                        {
                            value = t.GetValue(active).ToString();
                        }
                        file.Write(value);
                        if (t.Name != "HasSurge")
                        {
                            file.Write("\t");
                        }
                    }
                    active.Id++;
                    active.RecordIndex++;
                    file.Write("\r\n");
                }
            }
        }
        public void ExecutesOnParameterPropertyChange()
        {
            var value = ActiveValue.Create(new IntegerTestClass());

            var parameter = ActiveValue.Create(new IntegerTestClass());

            var sut = value.ActiveDo(parameter, (o, p) => o.SetProperty(p.Property));

            parameter.Value.Property = 10;

            Assert.Equal(10, sut.Value.Property);
        }
        public void ValueTypeIsNull()
        {
            var value = ActiveValue.Create <TypeBase>(null);

            var sut = value.ActiveCastOrDefault <TypeA>();

            Assert.Null(sut.Value);

            value.Value = new TypeA();

            Assert.Equal(value.Value, sut.Value);
        }
        public void ValueTypeIsCorrectAndThenIncorrect()
        {
            var value = ActiveValue.Create <TypeBase>(new TypeA());

            var sut = value.ActiveCastOrDefault <TypeB>();

            Assert.Null(sut.Value);

            value.Value = new TypeB();

            Assert.Equal(value.Value, sut.Value);
        }
예제 #18
0
        private void button4_Click(object sender, EventArgs e)
        {
            // operation = "*";
            if (!(sender is Button))
            {
                return;
            }
            var button = (Button)sender;

            operation = button.Text;
            active    = ActiveValue.v2;
        }
        public void StartListInActiveValueAsNull()
        {
            RandomGenerator.ResetRandomGenerator();

            var value = new ActiveValue <IEnumerable <int> >();

            value.Value = null;

            var sut = value.ToActiveList();

            Assert.True(sut.SequenceEqual(new int[0]));
        }
        public void SkipCountAndIncreaseSkip()
        {
            int raisedCount = 0;
            var skipCount   = ActiveValue.Create(3);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveSkip(skipCount);

            sut.CollectionChanged += (s, e) => ++ raisedCount;

            skipCount.Value = 4;

            Assert.Equal(0, raisedCount);
        }
        public void SkipLessThanCountAndDecreaseSkip()
        {
            int raisedCount = 0;
            var skipCount   = ActiveValue.Create(2);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveSkip(skipCount);

            sut.CollectionChanged += (s, e) => raisedCount += e.Action == NotifyCollectionChangedAction.Add ? 1 : 0;

            skipCount.Value = 1;

            Assert.Equal(1, raisedCount);
        }
        public void TakeLessThanCountAndDecreaseTake()
        {
            int raisedCount = 0;
            var takeCount   = ActiveValue.Create(2);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveTake(takeCount);

            sut.CollectionChanged += (s, e) => raisedCount += e.Action == NotifyCollectionChangedAction.Remove ? 1 : 0;

            takeCount.Value = 1;

            Assert.Equal(1, raisedCount);
        }
        public void TakeMoreThanCountAndDecreaseTake()
        {
            int raisedCount = 0;
            var takeCount   = ActiveValue.Create(4);
            var list        = ActiveList.Create(new[] { 1, 2, 3 });
            var sut         = list.ActiveTake(takeCount);

            sut.CollectionChanged += (s, e) => ++ raisedCount;

            takeCount.Value = 3;

            Assert.Equal(0, raisedCount);
        }
예제 #24
0
        public IEnumerable <Wizard> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <Wizard>();

            var query = this.GetWizardsQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var wizard = new Wizard
                        {
                            Name  = (reader["Name"] as string).Trim(),
                            Title = (reader["Title"] as string).Trim()
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            wizard.State = ComponentState.Active;
                        }
                        else
                        {
                            wizard.State = ComponentState.Closed;
                        }
                        if (reader["WizardDfm"] is byte[] wizardDfmRawData)
                        {
                            var wizardDfm = Encoding.GetEncoding(1251).GetString(wizardDfmRawData);
                            if (!string.IsNullOrWhiteSpace(wizardDfm))
                            {
                                var dfmWizard = WizardDfmParser.Parse(wizardDfm);
                                if (dfmWizard != null)
                                {
                                    wizard.Events.AddRange(dfmWizard.Events);
                                    wizard.Steps.AddRange(dfmWizard.Steps);
                                }
                            }
                        }
                        components.Add(wizard);
                    }
                }
            }
            return(components);
        }
        public void ReplaceListInActiveValueWithNull()
        {
            RandomGenerator.ResetRandomGenerator();

            var value = new ActiveValue <IEnumerable <int> >();

            value.Value = RandomGenerator.GenerateRandomIntegerList(50);

            var sut = value.ToActiveList();

            value.Value = null;

            Assert.True(sut.SequenceEqual(new int[0]));
        }
예제 #26
0
        public void WhereActiveValue()
        {
            var value = ActiveValue.Create(false);
            var sut   = new object[] { null }
            .ToActiveList()
            .ActiveWhere(_ => value)
            .ActiveAny();

            Assert.False(sut.Value);

            value.Value = true;

            Assert.True(sut.Value);
        }
예제 #27
0
        public void ObservableTriggersOnChange()
        {
            var value = new ActiveValue <int>();

            var observedValue = value.Value;

            var sut = value.ObserveValue();

            sut.Subscribe(i => observedValue = i);

            value.Value = 20;

            Assert.Equal(value.Value, observedValue);
        }
예제 #28
0
        public void SelectActiveValue()
        {
            var value = ActiveValue.Create(false);
            var sut   = new object[] { null }
            .ToActiveList()
            .ActiveSelect(_ => value)
            .ActiveAny(b => b);

            Assert.False(sut.Value);

            value.Value = true;

            Assert.True(sut.Value);
        }
        public void ChangeParameterValueToMakeEqual()
        {
            var parameter = new ActiveValue <IntegerTestClass>(new IntegerTestClass()
            {
                Property = 1
            });

            CreateLists(out IActiveValue <bool> sut, out Func <bool> linq, out ObservableList <IntegerTestClass> listOne, out ObservableList <IntegerTestClass> listTwo, new[] { 2, 4, 6 }, new[] { 1, 2, 3 }, parameter);

            Assert.Equal(sut.Value, linq.Invoke());

            parameter.Value.Property = 2;

            Assert.Equal(sut.Value, linq.Invoke());
        }
        public void UpdatesOnSourceChange()
        {
            var value = ActiveValue.Create(0);

            var sut = value.ActiveAggregate(0, (currentValue, newValue) => currentValue + newValue);

            Assert.Equal(0, sut.Value);

            value.Value = 10;

            Assert.Equal(10, sut.Value);

            value.Value = 5;

            Assert.Equal(15, sut.Value);
        }