Exemplo n.º 1
0
 public IReadOnlyDictionary <DeviceStatus, Action <Action> > Create(
     Action <Action> claimMoneyBack,
     Action <Action> claimNotOperational,
     Action <Action> claimCircuitry) =>
 new Dictionary <DeviceStatus, Action <Action> >
 {
     [DeviceStatus.AllFine()] = claimMoneyBack,
     [DeviceStatus.AllFine().NotOperational()]    = claimNotOperational,
     [DeviceStatus.AllFine().WithVisibleDamage()] = (action) => { },
     [DeviceStatus.AllFine().NotOperational().WithVisibleDamage()] = claimNotOperational,
     [DeviceStatus.AllFine().CircuitryFailed()] = claimCircuitry,
     [DeviceStatus.AllFine().NotOperational().CircuitryFailed()]    = claimNotOperational,
     [DeviceStatus.AllFine().CircuitryFailed().WithVisibleDamage()] = claimCircuitry,
     [DeviceStatus.AllFine().NotOperational().WithVisibleDamage()]  = claimNotOperational,
 };
Exemplo n.º 2
0
        public SoldArticle(IWarranty moneyBack, IWarranty express, IWarrantyMapFactory rulesFactory)
        {
            if (moneyBack == null)
            {
                throw new ArgumentNullException(nameof(moneyBack));
            }
            if (express == null)
            {
                throw new ArgumentNullException(nameof(express));
            }

            this.MoneyBackGuarantee     = moneyBack;
            this.ExpressWarranty        = VoidWarranty.Value;
            this.NotOperationalWarranty = express;
            this.CircuitryWarranty      = VoidWarranty.Value;

            // With objects methods calls
            this.OperationalStatus = DeviceStatus.AllFine();
            this.WarrantyMap       = rulesFactory.Create(
                this.ClaimMoneyBack, this.ClaimNotOperationalWarranty, this.ClaimCircuitryWarranty);
        }
Exemplo n.º 3
0
        public SoldArticle(IWarranty moneyBackGuatrantee, IWarranty expressWarranty,
                           IWarranryMapFactory rulesFactory)
        {
            if (moneyBackGuatrantee == null)
            {
                throw new ArgumentNullException(nameof(moneyBackGuatrantee));
            }
            if (expressWarranty == null)
            {
                throw new ArgumentNullException(nameof(expressWarranty));
            }

            MoneyBackGuatrantee    = moneyBackGuatrantee;
            NotOperationalWarranty = expressWarranty;
            CircuitryWarranty      = VoidWarranty.Instance;

            OperationalStatus = DeviceStatus.AllFine();

            //WarrantyMap = WarrantyRules.GetCommonRule(
            //    ClaimMoneyBack, ClaimNotOperationalWarranty, ClaimCircuitryWarranty);

            WarrantyMap = rulesFactory.Create(ClaimMoneyBack, ClaimNotOperationalWarranty, ClaimCircuitryWarranty);
        }