コード例 #1
0
        public void PauseTurnOffTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            for (int i = 0; i < 24; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            BiscuitMakerManager.Pause(this.Maker);

            for (int i = 0; i < 2; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            BiscuitMakerManager.TurnOff(this.Maker);

            for (int i = 0; i < 2; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            this.Maker.FirstOven.CurrentTemperature.Should().Be(220);
            this.Maker.FirstConveyor.HasBiscuits.Should().BeTrue();
            this.Maker.FirstConveyor.Belt.Count(x => x != null).Should().Be(3);
            this.Maker.FirstBucket.Biscuits.Count.Should().Be(2);
        }
コード例 #2
0
        public void TurnPauseTest()
        {
            BiscuitMakerManager.TurnOff(this.Maker);
            Action action = () => BiscuitMakerManager.Pause(this.Maker);

            action.Should().NotThrow();

            Maker.FirstSwitch.State.Should().Be(SwitchState.Pause);
        }
コード例 #3
0
        public void TurnOnTest()
        {
            Action action = () => BiscuitMakerManager.TurnOn(this.Maker);

            action.Should().NotThrow();

            Maker.FirstSwitch.State.Should().Be(SwitchState.On);
            Maker.FirstOven.State.Should().Be(OvenState.Heating);
        }
コード例 #4
0
        public void HitMinTempTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            for (int i = 0; i < 24; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            this.Maker.FirstOven.CurrentTemperature.Should().Be(220);
            this.Maker.FirstConveyor.HasBiscuits.Should().BeTrue();
            this.Maker.FirstConveyor.Belt.Count(x => x != null).Should().Be(5);
        }
コード例 #5
0
        static void Main(string[] args)
        {
            var settings = BiscuitMakerSettingsLoader.LoadFromConfig();
            var maker    = BiscuitMakerFactory.Create(settings);
            var display  = new BiscuitMakerConsoleDisplay(maker);

            display.Render();

            var timer = new Timer
            {
                Interval  = 1000,
                Enabled   = true,
                AutoReset = true,
            };

            timer.Elapsed += (s, e) =>
            {
                BiscuitMakerManager.Tick(maker);
                display.Render();
            };

            ConsoleKeyInfo key;

            do
            {
                key = Console.ReadKey();

                switch (key.KeyChar)
                {
                case 'o':
                    BiscuitMakerManager.TurnOn(maker);
                    break;

                case 'p':
                    BiscuitMakerManager.Pause(maker);
                    break;

                case 'f':
                    BiscuitMakerManager.TurnOff(maker);
                    break;

                case 'q':
                    break;

                default:
                    Console.WriteLine("Unknown command");
                    break;
                }

                display.Render();
            } while (key.KeyChar != 'q');
        }
コード例 #6
0
        public void HandleOneMotorPulseTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            Action action = () => ConveyorManager.HandleMotorPulse(
                null,
                new OnMotorPulseEventArgs {
                Maker = this.Maker
            }
                );

            action.Should().NotThrow();

            this.Maker.FirstConveyor.Belt.Count.Should().Be(6);
            this.Maker.FirstConveyor.Belt.ElementAt(1).Should().NotBeNull();
            this.Maker.FirstConveyor.Belt.ElementAt(1).IsExtruded.Should().BeTrue();
        }
コード例 #7
0
        public void HeatUpTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            BiscuitMakerManager.Tick(this.Maker);

            this.Maker.FirstConveyor.HasBiscuits.Should().BeFalse();
            this.Maker.FirstOven.CurrentTemperature.Should().Be(32);

            for (int i = 0; i < 19; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            this.Maker.FirstOven.CurrentTemperature.Should().Be(222);
            this.Maker.FirstConveyor.HasBiscuits.Should().BeTrue();
            this.Maker.FirstConveyor.Belt.Count(x => x != null).Should().Be(1);
        }
コード例 #8
0
        public void OvenCoolDownTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            for (int i = 0; i < 24; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            BiscuitMakerManager.TurnOff(this.Maker);

            for (int i = 0; i < 26; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            this.Maker.FirstOven.CurrentTemperature.Should().Be(22);
        }
コード例 #9
0
        public void TurnOffOvenTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            for (int i = 0; i < 24; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            BiscuitMakerManager.TurnOff(this.Maker);

            for (int i = 0; i < 6; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            this.Maker.FirstOven.CurrentTemperature.Should().Be(220);
            this.Maker.FirstOven.State.Should().Be(OvenState.Off);
        }
コード例 #10
0
        public void HandleFullCycleMotorPulseTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            Action action = () => ConveyorManager.HandleMotorPulse(
                null,
                new OnMotorPulseEventArgs {
                Maker = this.Maker
            }
                );

            action.Should().NotThrow();
            action.Invoke();
            action.Invoke();
            action.Invoke();
            action.Invoke();
            action.Invoke();

            this.Maker.FirstConveyor.Belt.Count.Should().Be(6);
            this.Maker.FirstConveyor.Belt.ElementAt(0).Should().BeNull();

            this.Maker.FirstConveyor.Belt.ElementAt(1).Should().NotBeNull();
            this.Maker.FirstConveyor.Belt.ElementAt(1).IsExtruded.Should().BeTrue();

            this.Maker.FirstConveyor.Belt.ElementAt(2).Should().NotBeNull();
            this.Maker.FirstConveyor.Belt.ElementAt(2).IsExtruded.Should().BeTrue();
            this.Maker.FirstConveyor.Belt.ElementAt(2).IsStamped.Should().BeTrue();

            this.Maker.FirstConveyor.Belt.ElementAt(3).Should().NotBeNull();
            this.Maker.FirstConveyor.Belt.ElementAt(3).IsExtruded.Should().BeTrue();
            this.Maker.FirstConveyor.Belt.ElementAt(3).IsStamped.Should().BeTrue();

            this.Maker.FirstConveyor.Belt.ElementAt(4).Should().NotBeNull();
            this.Maker.FirstConveyor.Belt.ElementAt(4).IsExtruded.Should().BeTrue();
            this.Maker.FirstConveyor.Belt.ElementAt(4).IsStamped.Should().BeTrue();

            this.Maker.FirstConveyor.Belt.ElementAt(5).Should().NotBeNull();
            this.Maker.FirstConveyor.Belt.ElementAt(5).IsExtruded.Should().BeTrue();
            this.Maker.FirstConveyor.Belt.ElementAt(5).IsStamped.Should().BeTrue();

            this.Maker.FirstBucket.Biscuits.Count.Should().Be(1);
            this.Maker.FirstBucket.Biscuits.First().IsExtruded.Should().BeTrue();
            this.Maker.FirstBucket.Biscuits.First().IsStamped.Should().BeTrue();
            this.Maker.FirstBucket.Biscuits.First().IsDone.Should().BeTrue();
        }
コード例 #11
0
        public void HandleMotorPulseTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);

            Action action = () => Extruder.HandleMotorPulse(
                null,
                new OnMotorPulseEventArgs {
                Maker = this.Maker
            }
                );

            action.Should().NotThrow();

            var biscuit = this.Maker.FirstConveyor.Belt.ElementAt(0);

            biscuit.Should().NotBeNull();
            biscuit.IsExtruded.Should().BeTrue();
            biscuit.IsStamped.Should().BeFalse();
            biscuit.IsDone.Should().BeFalse();
        }
コード例 #12
0
        public void CreateFiveTurnOffAndUnloadTest()
        {
            BiscuitMakerManager.TurnOn(this.Maker);
            for (int i = 0; i < 24; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            BiscuitMakerManager.TurnOff(this.Maker);

            for (int i = 0; i < 5; i++)
            {
                BiscuitMakerManager.Tick(this.Maker);
            }

            this.Maker.FirstOven.CurrentTemperature.Should().Be(230);
            this.Maker.FirstConveyor.HasBiscuits.Should().BeFalse();
            this.Maker.FirstConveyor.Belt.Count(x => x != null).Should().Be(0);
            this.Maker.FirstBucket.Biscuits.Count.Should().Be(5);
        }