Ejemplo n.º 1
0
        public void MethodCall_ObservableTarget_NoUpdateWhenDetached()
        {
            var update = false;
            var dummy  = new ObservableDummy <int>()
            {
                Item = 23
            };

            var test = new NotifyValue <string>(() => dummy.Item.ToString());

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = 42;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            dummy.Item = 0;

            Assert.IsTrue(update);
        }
Ejemplo n.º 2
0
        public void MethodCall_ObservableTarget_Update()
        {
            var update = false;
            var dummy  = new ObservableDummy <int>()
            {
                Item = 23
            };

            var test = new NotifyValue <string>(() => dummy.Item.ToString());

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("23", e.OldValue);
                Assert.AreEqual("42", e.NewValue);
            };

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
        }
Ejemplo n.º 3
0
        public void ArrayCreation_Observable_NoUpdatesWhenDetached()
        {
            var update = false;
            var dummy  = new ObservableDummy <int>()
            {
                Item = 23
            };

            var test = new NotifyValue <int[]>(() => new int[dummy.Item]);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, (test.Value as int[]).Length);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = 42;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value.Length);
            update = false;

            dummy.Item = 2;

            Assert.IsTrue(update);
        }
Ejemplo n.º 4
0
        public void MethodCall_ObservableArgument_NoUpdatesWhenDetached()
        {
            var update = false;
            var dummy  = new ObservableDummy <string>()
            {
                Item = "23"
            };

            var test = new NotifyValue <int>(() => int.Parse(dummy.Item));

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = "42";

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
            update = false;

            dummy.Item = "0";

            Assert.IsTrue(update);
        }
Ejemplo n.º 5
0
        public SearchOfferViewModel()
        {
            DisplayName           = "Поиск в прайс-листах";
            NeedToCalculateDiff   = true;
            NavigateOnShowCatalog = true;

            HideJunk = new NotifyValue <bool>();
            OnlyBase = new NotifyValue <bool>();

            if (Session != null)
            {
                Prices = Session.Query <Price>()
                         .OrderBy(p => p.Name)
                         .Select(p => new Selectable <Price>(p))
                         .ToList();
            }
            else
            {
                Prices = new List <Selectable <Price> >();
            }
            Settings.Subscribe(_ => {
                Offers.Value = SortOffers(Offers.Value);
            });
            SearchBehavior = new SearchBehavior(this);
            IsLoading      = new NotifyValue <bool>();
            Persist(HideJunk, "HideJunk");
        }
        private CatalogOfferViewModel(OfferComposedId initOfferId = null)
            : base(initOfferId)
        {
            InitFields();
            NeedToCalculateDiff = true;
            DisplayName         = "Сводный прайс-лист";
            Filters             = new[] { "Все", "Основные", "Неосновные" };

            CurrentFilter.Value = Filters[0];
            CurrentRegion.Value = Consts.AllRegionLabel;

            GroupByProduct.Value = Settings.Value.GroupByProduct;
            GroupByProduct.Subscribe(_ => Offers.Value = Sort(Offers.Value));

            RetailMarkup = new NotifyValue <decimal>(true,
                                                     () => MarkupConfig.Calculate(Settings.Value.Markups, CurrentOffer.Value, User, Address),
                                                     Settings);

            RetailCost = CurrentOffer.CombineLatest(RetailMarkup, Rounding,
                                                    (o, m, r) => Round(NullableHelper.Round(o?.ResultCost * (1 + m / 100), 2), r))
                         .ToValue();

            CurrentOffer.Subscribe(_ => RetailMarkup.Recalculate());

            Persist(HideJunk, "HideJunk");
            Persist(GroupByProduct, "GroupByProduct");
            SessionValue(CurrentRegion, "CurrentRegion");
            SessionValue(CurrentFilter, "CurrentFilter");

            PrintMenuItems = new ObservableCollection <MenuItem>();
            IsView         = true;
        }
Ejemplo n.º 7
0
 public ProducerPromotionPopup(Config.Config config,
                               IObservable <CatalogName> catalog,
                               Env env)
 {
     Name               = new NotifyValue <CatalogName>(catalog);
     Visible            = new NotifyValue <bool>();
     ProducerPromotions = new NotifyValue <List <ProducerPromotion> >(new List <ProducerPromotion>());
     catalog
     .Throttle(Consts.ScrollLoadTimeout, env.Scheduler)
     .SelectMany(x => env.RxQuery(s => {
         if (x == null)
         {
             return(new List <ProducerPromotion>());
         }
         var nameId = x.Id;
         var query  = s.Query <ProducerPromotion>().Where(p => p.Catalogs.Any(c => c.Name.Id == nameId));
         return(query
                .OrderBy(p => p.Name)
                .Fetch(p => p.Producer)
                .ToList());
     }))
     .Subscribe(x => {
         ProducerPromotions.Value = x;
         ProducerPromotions.Value?.Each(p => p.Init(config));
         Visible.Value = ProducerPromotions.Value?.Count > 0;
     });
 }
Ejemplo n.º 8
0
        public void New_Observable_NoUpdatesWhenDetached()
        {
            var update = false;
            var dummy  = new ObservableDummy <int>()
            {
                Item = 23
            };

            var test = new NotifyValue <Dummy <int> >(() => new Dummy <int>(dummy.Item));

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, (test.Value as Dummy <int>).Item);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = 42;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value.Item);
            update = false;

            dummy.Item = 1;

            Assert.IsTrue(update);
        }
Ejemplo n.º 9
0
        public void ArrayLongIndexer2d_ObservableIndex_NoUpdatesWhenDetached()
        {
            var update = false;
            var coll   = new string[, ] {
                { "23", "42" }
            };
            var dummy = new ObservableDummy <long>();

            var test = new NotifyValue <string>(() => coll[0, dummy.Item]);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = 1;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            dummy.Item = 0;

            Assert.IsTrue(update);
        }
Ejemplo n.º 10
0
        public void UnaryMinusChecked_Float_Observable_Updates()
        {
            checked
            {
                var update = false;
                var dummy  = new ObservableDummy <float>()
                {
                    Item = 23
                };

                var test = new NotifyValue <float>(() => - dummy.Item);

                test.ValueChanged += (o, e) =>
                {
                    update = true;
                    Assert.AreEqual(-23, (float)e.OldValue);
                    Assert.AreEqual(42, (float)e.NewValue);
                };

                Assert.AreEqual(-23, test.Value);
                Assert.IsFalse(update);

                dummy.Item = -42;

                Assert.IsTrue(update);
                Assert.AreEqual(42, test.Value);
            }
        }
        public PriceOfferViewModel(PriceComposedId priceId, bool showLeaders, OfferComposedId initOfferId = null)
            : base(initOfferId)
        {
            //мы не можем принимать объект который принадлежит другой форме
            //это может вызвать исключение если сессия в которой был загружен объект будет закрыта
            //утечки памяти если текущая форма подпишется на события изменения в переданном объекте
            //между формами можно передавать только примитивные объекты
            this.priceId = priceId;

            DisplayName = "Заявка поставщику";
            Price       = new NotifyValue <Price>();
            IsLoading   = new NotifyValue <bool>();

            Filters       = filters;
            CurrentFilter = new NotifyValue <string>(filters[0]);
            if (showLeaders)
            {
                FilterLeader();
            }

            //по идее это не нужно тк обо всем должен позаботится сборщик мусора
            //но если не удалить подписку будет утечка памяти
            OnCloseDisposable.Add(this.ObservableForProperty(m => m.Price.Value.Order)
                                  .Subscribe(_ => NotifyOfPropertyChange(nameof(CanDeleteOrder))));
            SearchBehavior = new SearchBehavior(this);

            CurrentProducer.Cast <object>()
            .Merge(CurrentFilter.Cast <object>())
            .Merge(SearchBehavior.ActiveSearchTerm.Cast <object>())
            .Subscribe(_ => Filter());

            PrintMenuItems = new ObservableCollection <MenuItem>();
            IsView         = true;
        }
Ejemplo n.º 12
0
        public Mails()
        {
            DisplayName = "Минипочта";
            Sort        = new[] {
                "Сортировка: Дата",
                "Сортировка: Тема",
                "Сортировка: Отправитель",
                "Сортировка: Важность",
            };

            Term          = new NotifyValue <string>();
            CurrentItem   = new NotifyValue <Mail>();
            SelectedItems = new ObservableCollection <Mail>();
            CurrentSort   = new NotifyValue <string>("Сортировка: Дата");
            IsAsc         = new NotifyValue <bool>(false);

            Items = Term.Cast <object>()
                    .Throttle(TimeSpan.FromMilliseconds(100), Scheduler)
                    .Merge(CurrentSort)
                    .Merge(IsAsc.Select(v => (object)v))
                    .ObserveOn(UiScheduler)
                    .ToValue(_ => Apply());
            CanDelete = SelectedItems.Changed().ToValue(_ => SelectedItems.Count > 0);
            var updateStat = Items.ObservableForProperty(i => i.Value)
                             .Select(l => l.Value.Changed())
                             .Switch();

            OnCloseDisposable.Add(updateStat.Subscribe(_ => Shell.NewMailsCount.Value = mails.Count(m => m.IsNew)));
        }
Ejemplo n.º 13
0
        public void Indexer_ObservableSource_NoUpdatesWhenDetached()
        {
            var update = false;
            var coll   = new ObservableCollection <string>();

            coll.Add("23");

            var test = new NotifyValue <string>(() => coll[0]);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            test.Detach();

            coll.Insert(0, "42");

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            coll.Insert(0, "Foo");

            Assert.IsTrue(update);
        }
Ejemplo n.º 14
0
        public MatchedWaybills(BaseScreen screen,
                               NotifyValue <SentOrderLine> line,
                               NotifyValue <bool> isSentSelected)
        {
            CurrentWaybillLine       = new NotifyValue <WaybillLine>();
            WaybillLines             = new NotifyValue <List <WaybillLine> >();
            WaybillDetailsVisibility = new NotifyValue <Visibility>(() => {
                if (!isSentSelected)
                {
                    return(Visibility.Collapsed);
                }
                if (WaybillLines.Value == null || WaybillLines.Value.Count == 0)
                {
                    return(Visibility.Hidden);
                }
                return(Visibility.Visible);
            }, isSentSelected, WaybillLines);
            EmptyLabelVisibility = new NotifyValue <Visibility>(() => {
                if (!isSentSelected)
                {
                    return(Visibility.Collapsed);
                }
                if (WaybillLines.Value != null && WaybillLines.Value.Count > 0)
                {
                    return(Visibility.Hidden);
                }
                return(Visibility.Visible);
            }, isSentSelected, WaybillLines);

            line.Throttle(Consts.ScrollLoadTimeout, screen.UiScheduler)
            .SelectMany(v => screen.RxQuery(s => LoadMatchedWaybill(v, s)))
            .Subscribe(WaybillLines, screen.CloseCancellation.Token);
        }
        public WaybillsViewModel()
        {
            DisplayName = "Документы";
            InitFields();
            SelectedWaybills = new List <Waybill>();

            Waybills.PropertyChanged += Waybills_PropertyChanged;
            WaybillsTotal             = new ObservableCollection <WaybillTotal>();
            WaybillsTotal.Add(new WaybillTotal {
                TotalSum = 0.0m, TotalRetailSum = 0.0m
            });

            Begin = new NotifyValue <DateTime>(DateTime.Today.AddMonths(-3).FirstDayOfMonth());
            End   = new NotifyValue <DateTime>(DateTime.Today);
            IsFilterByDocumentDate = new NotifyValue <bool>(true);
            CanDelete       = CurrentWaybill.Select(v => v != null && v.Status != Models.Inventory.DocStatus.Posted).ToValue();
            AddressSelector = new AddressSelector(this)
            {
                Description = "Все адреса"
            };

            Persist(IsFilterByDocumentDate, "IsFilterByDocumentDate");
            Persist(IsFilterByWriteTime, "IsFilterByWriteTime");

            PrintMenuItems = new ObservableCollection <MenuItem>();
            IsView         = true;
        }
Ejemplo n.º 16
0
        public void UnaryPlusChecked_Long_Observable_Updates()
        {
            checked
            {
                var update = false;
                var dummy  = new ObservableDummy <long>()
                {
                    Item = 23
                };

                var test = new NotifyValue <long>(() => + dummy.Item);

                test.ValueChanged += (o, e) =>
                {
                    update = true;
                    Assert.AreEqual(23, (long)e.OldValue);
                    Assert.AreEqual(42, (long)e.NewValue);
                };

                Assert.AreEqual(23, test.Value);
                Assert.IsFalse(update);

                dummy.Item = 42;

                Assert.IsTrue(update);
                Assert.AreEqual(42, test.Value);
            }
        }
Ejemplo n.º 17
0
        public void UnaryPlus_Decimal_Observable_Updates()
        {
            var update = false;
            var dummy  = new ObservableDummy <decimal>()
            {
                Item = 23
            };

            var test = new NotifyValue <decimal>(() => + dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, (decimal)e.OldValue);
                Assert.AreEqual(42, (decimal)e.NewValue);
            };

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
        }
Ejemplo n.º 18
0
        public void Negate_Bool_Observable_Updates()
        {
            var update = false;
            var dummy  = new ObservableDummy <bool>()
            {
                Item = true
            };

            var test = new NotifyValue <bool>(() => !dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.IsFalse((bool)e.OldValue);
                Assert.IsTrue((bool)e.NewValue);
            };

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            dummy.Item = false;

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
        }
Ejemplo n.º 19
0
        public MainForm()
        {
            InitializeComponent();

            _programNameVersion = $"{Application.ProductName} {Application.ProductVersion}";

            _stopwatchFrequency = Stopwatch.Frequency;

            _config = PluginfunConfig.Load();

            _emulatedSystem = new EmulatedSystem();

            _emulationInitialised = new NotifyValue <bool>(false);
            _emulationPaused      = new NotifyValue <bool>(false);

            LoadDynamicComponents();

            PrepareUserInterface();
            PrepareDataBindings();

            InitBitmaps();

            Application.Idle += (s, ev) => { while (_emulationInitialised && !_emulationPaused && ApplicationStillIdle)
                                             {
                                                 RunFrame();
                                             }
            };
        }
Ejemplo n.º 20
0
        public void MemberExpression_ObservableSourceTargetChanges_Update()
        {
            var update = false;
            var dummy  = new ObservableDummy <Dummy <int> >()
            {
                Item = new Dummy <int>(23)
            };

            var test = new NotifyValue <int>(() => dummy.Item.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, e.OldValue);
                Assert.AreEqual(42, e.NewValue);
            };

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = new Dummy <int>(42);

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
        }
Ejemplo n.º 21
0
        public void MethodCall_ObservableArgument_Update()
        {
            var update = false;
            var dummy  = new ObservableDummy <string>()
            {
                Item = "23"
            };

            var test = new NotifyValue <int>(() => int.Parse(dummy.Item));

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, e.OldValue);
                Assert.AreEqual(42, e.NewValue);
            };

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = "42";

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
        }
Ejemplo n.º 22
0
        public void ArrayLongIndexer2d_ObservableIndex_Updates()
        {
            var update = false;
            var coll   = new string[, ] {
                { "23", "42" }
            };
            var dummy = new ObservableDummy <long>();

            var test = new NotifyValue <string>(() => coll[0L, dummy.Item]);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("23", e.OldValue);
                Assert.AreEqual("42", e.NewValue);
            };

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            dummy.Item = 1;

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
        }
Ejemplo n.º 23
0
        public void Cast_String_Observable_NoUpdatesWhenDetached()
        {
            var update = false;
            var dummy  = new ObservableDummy <object>()
            {
                Item = "23"
            };

            var test = new NotifyValue <string>(() => (string)dummy.Item);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = "42";

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            dummy.Item = "1";

            Assert.IsTrue(update);
        }
Ejemplo n.º 24
0
        public void Indexer_ObservableIndex_Updates()
        {
            var update = false;
            var coll   = new List <string>();

            coll.Add("23");
            coll.Add("42");
            var dummy = new ObservableDummy <int>();

            var test = new NotifyValue <string>(() => coll[dummy.Item]);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("23", e.OldValue);
                Assert.AreEqual("42", e.NewValue);
            };

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            dummy.Item = 1;

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
        }
Ejemplo n.º 25
0
        public void Indexer_ObservableIndex_NoUpdatesWhenDetached()
        {
            var update = false;
            var coll   = new List <string>();

            coll.Add("23");
            coll.Add("42");
            var dummy = new ObservableDummy <int>();

            var test = new NotifyValue <string>(() => coll[dummy.Item]);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = 1;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            dummy.Item = 0;

            Assert.IsTrue(update);
        }
Ejemplo n.º 26
0
        protected override void OnInitialize()
        {
            base.OnInitialize();

            ProductInfo  = new ProductInfo(this, CurrentLine.OfType <BaseOffer>());
            OrderWarning = new InlineEditWarning(UiScheduler, Manager);

            //если это отправленный заказ редактор не должен работать
            var currentOrderLine = new NotifyValue <OrderLine>();

            if (IsCurrentOrder)
            {
                currentOrderLine = CurrentLine.Select(v => (OrderLine)v).ToValue();
                currentOrderLine.Subscribe(v => CurrentLine.Value = v);
            }
            editor             = new Editor(OrderWarning, Manager, currentOrderLine, Lines.Cast <IList>().ToValue());
            OnlyWarningVisible = new NotifyValue <bool>(User.IsPreprocessOrders && IsCurrentOrder);
            CurrentLine.OfType <BaseOffer>()
            .Throttle(Consts.LoadOrderHistoryTimeout, Scheduler)
            .Select(x => RxQuery(s => BaseOfferViewModel.LoadOrderHistory(s, Cache, Settings.Value, x, Address)))
            .Switch()
            .Subscribe(HistoryOrders, CloseCancellation.Token);

            FilterItems.Select(p => p.Changed()).Merge().Throttle(Consts.FilterUpdateTimeout, UiScheduler)
            .Select(_ => Filter())
            .Subscribe(Lines, CloseCancellation.Token);
        }
Ejemplo n.º 27
0
        public void Cast_String_Observable_Update()
        {
            var update = false;
            var dummy  = new ObservableDummy <object>()
            {
                Item = "23"
            };

            var test = new NotifyValue <string>(() => (string)dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("23", e.OldValue);
                Assert.AreEqual("42", e.NewValue);
            };

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            dummy.Item = "42";

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
        }
Ejemplo n.º 28
0
        public void ArrayCreation_Observable_NoUpdatesWhenDetached()
        {
            var update = false;
            var dummy = new ObservableDummy<int>() { Item = 23 };

            var test = new NotifyValue<int[]>(() => new int[dummy.Item]);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, (test.Value as int[]).Length);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = 42;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value.Length);
            update = false;

            dummy.Item = 2;

            Assert.IsTrue(update);
        }
Ejemplo n.º 29
0
        public void New_Observable_NoUpdatesWhenDetached()
        {
            var update = false;
            var dummy = new ObservableDummy<int>() { Item = 23 };

            var test = new NotifyValue<Dummy<int>>(() => new Dummy<int>(dummy.Item));

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, (test.Value as Dummy<int>).Item);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = 42;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value.Item);
            update = false;

            dummy.Item = 1;

            Assert.IsTrue(update);
        }
Ejemplo n.º 30
0
        public void Cast_String_Observable_NoUpdatesWhenDetached()
        {
            var update = false;
            var dummy = new ObservableDummy<object>() { Item = "23" };

            var test = new NotifyValue<string>(() => (string)dummy.Item);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            test.Detach();

            dummy.Item = "42";

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            dummy.Item = "1";

            Assert.IsTrue(update);
        }
Ejemplo n.º 31
0
        public void Cast_Int_Observable_Update()
        {
            var update = false;
            var dummy  = new ObservableDummy <object>()
            {
                Item = 23
            };

            var test = new NotifyValue <int>(() => (int)dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, e.OldValue);
                Assert.AreEqual(42, e.NewValue);
            };

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
        }
Ejemplo n.º 32
0
 public SelfClose(string request, string caption, int seconds)
 {
     Message      = request;
     DisplayName  = caption;
     countdown    = caption + " будет произведено через {0} секунд";
     this.seconds = seconds;
     CountDown    = new NotifyValue <string>();
 }
 public OrderRejectDetails(uint id)
 {
     this.id     = id;
     Doc         = new NotifyValue <OrderReject>();
     Lines       = new NotifyValue <List <OrderRejectLine> >();
     CurrentLine = new NotifyValue <OrderRejectLine>();
     DisplayName = "Отказ";
 }
Ejemplo n.º 34
0
        public void MemberExpression_NoObservableSourceTargetChanges_NoUpdates()
        {
            var update = false;
            var dummy = new Dummy<Dummy<int>>() { Item = new Dummy<int>(23) };

            var test = new NotifyValue<int>(() => dummy.Item.Item);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = new Dummy<int>(42);

            Assert.IsFalse(update);
        }
Ejemplo n.º 35
0
        public void ArrayInitialization_NoObservable_NoUpdates()
        {
            var update = false;
            var dummy = new Dummy<int>() { Item = 23 };

            var test = new NotifyValue<int[]>(() => new int[] { dummy.Item });

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, (test.Value as int[])[0]);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsFalse(update);
        }
Ejemplo n.º 36
0
        public void New_NoObservable_NoUpdates()
        {
            var update = false;
            var dummy = new Dummy<int>() { Item = 23 };

            var test = new NotifyValue<Dummy<int>>(() => new Dummy<int>(dummy.Item));

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, (test.Value as Dummy<int>).Item);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsFalse(update);
        }
Ejemplo n.º 37
0
        public void ArrayCreation_Observable_Updates()
        {
            var update = false;
            var dummy = new ObservableDummy<int>() { Item = 23 };

            var test = new NotifyValue<int[]>(() => new int[dummy.Item]);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, (e.OldValue as int[]).Length);
                Assert.AreEqual(42, (e.NewValue as int[]).Length);
            };

            Assert.AreEqual(23, (test.Value as int[]).Length);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsTrue(update);
        }
Ejemplo n.º 38
0
        public void Cast_String_Observable_Update()
        {
            var update = false;
            var dummy = new ObservableDummy<object>() { Item = "23" };

            var test = new NotifyValue<string>(() => (string)dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("23", e.OldValue);
                Assert.AreEqual("42", e.NewValue);
            };

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            dummy.Item = "42";

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
        }
Ejemplo n.º 39
0
        public void MemberExpression_ObservableSourceMemberChanges_Update()
        {
            var update = false;
            var dummy = new ObservableDummy<int>() { Item = 23 };

            var test = new NotifyValue<int>(() => dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, e.OldValue);
                Assert.AreEqual(42, e.NewValue);
            };

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
        }
Ejemplo n.º 40
0
        public void Negate_Bool_NoObservable_NoUpdates()
        {
            var update = false;
            var dummy = new Dummy<bool>() { Item = true };

            var test = new NotifyValue<bool>(() => !dummy.Item);

            test.ValueChanged += (o, e) => update = true;

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            dummy.Item = false;

            Assert.IsFalse(update);
        }
Ejemplo n.º 41
0
        public void UnaryMinusChecked_Double_Observable_Updates()
        {
            checked
            {
                var update = false;
                var dummy = new ObservableDummy<double>() { Item = 23 };

                var test = new NotifyValue<double>(() => -dummy.Item);

                test.ValueChanged += (o, e) =>
                {
                    update = true;
                    Assert.AreEqual(-23, (double)e.OldValue);
                    Assert.AreEqual(42, (double)e.NewValue);
                };

                Assert.AreEqual(-23, test.Value);
                Assert.IsFalse(update);

                dummy.Item = -42;

                Assert.IsTrue(update);
                Assert.AreEqual(42, test.Value); 
            }
        }
Ejemplo n.º 42
0
        public void UnaryPlus_Float_NoObservable_NoUpdates()
        {
            var update = false;
            var dummy = new Dummy<float>() { Item = 23 };

            var test = new NotifyValue<float>(() => dummy.Item);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsFalse(update);
        }
Ejemplo n.º 43
0
        public void UnaryPlus_Float_Observable_Updates()
        {
            var update = false;
            var dummy = new ObservableDummy<float>() { Item = 23 };

            var test = new NotifyValue<float>(() => +dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, (float)e.OldValue);
                Assert.AreEqual(42, (float)e.NewValue);
            };

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
        }
Ejemplo n.º 44
0
        public void Cast_Int_NoObservable_NoUpdates()
        {
            var update = false;
            var dummy = new Dummy<object>() { Item = 23 };

            var test = new NotifyValue<int>(() => (int)dummy.Item);

            test.ValueChanged += (o, e) => update = true;

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsFalse(update);
        }
Ejemplo n.º 45
0
        public void UnaryPlusChecked_Decimal_NoObservable_NoUpdates()
        {
            checked
            {
                var update = false;
                var dummy = new Dummy<decimal>() { Item = 23 };

                var test = new NotifyValue<decimal>(() => +dummy.Item);

                test.ValueChanged += (o, e) => update = true;

                Assert.AreEqual(23, test.Value);
                Assert.IsFalse(update);

                dummy.Item = 42;

                Assert.IsFalse(update);
            }
        }
Ejemplo n.º 46
0
        public void Cast_Int_Observable_Update()
        {
            var update = false;
            var dummy = new ObservableDummy<object>() { Item = 23 };

            var test = new NotifyValue<int>(() => (int)dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(23, e.OldValue);
                Assert.AreEqual(42, e.NewValue);
            };

            Assert.AreEqual(23, test.Value);
            Assert.IsFalse(update);

            dummy.Item = 42;

            Assert.IsTrue(update);
            Assert.AreEqual(42, test.Value);
        }
Ejemplo n.º 47
0
        public void UnaryPlusChecked_Decimal_Observable_Updates()
        {
            checked
            {
                var update = false;
                var dummy = new ObservableDummy<decimal>() { Item = 23 };

                var test = new NotifyValue<decimal>(() => +dummy.Item);

                test.ValueChanged += (o, e) =>
                {
                    update = true;
                    Assert.AreEqual(23, (decimal)e.OldValue);
                    Assert.AreEqual(42, (decimal)e.NewValue);
                };

                Assert.AreEqual(23, test.Value);
                Assert.IsFalse(update);

                dummy.Item = 42;

                Assert.IsTrue(update);
                Assert.AreEqual(42, test.Value);
            }
        }
Ejemplo n.º 48
0
        public void Negate_Bool_Observable_Updates()
        {
            var update = false;
            var dummy = new ObservableDummy<bool>() { Item = true };

            var test = new NotifyValue<bool>(() => !dummy.Item);

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.IsFalse((bool)e.OldValue);
                Assert.IsTrue((bool)e.NewValue);
            };

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            dummy.Item = false;

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
        }
Ejemplo n.º 49
0
        public void UnaryMinusChecked_Long_NoObservable_NoUpdates()
        {
            checked
            {
                var update = false;
                var dummy = new Dummy<long>() { Item = 23 };

                var test = new NotifyValue<long>(() => -dummy.Item);

                test.ValueChanged += (o, e) => update = true;

                Assert.AreEqual(-23, test.Value);
                Assert.IsFalse(update);

                dummy.Item = -42;

                Assert.IsFalse(update); 
            }
        }