Пример #1
0
        public override void Execute()
        {
            var television = new Television();

            Assert.IsType <TelevisionOffState>(television.State);
            Assert.False(television.Powered);
            Assert.Null(television.Volume);
            Assert.Null(television.Muted);

            television.LowerVolume();
            // Nothing should changes when the television is off.
            Assert.IsType <TelevisionOffState>(television.State);
            Assert.False(television.Powered);
            Assert.Null(television.Volume);
            Assert.Null(television.Muted);

            television.IncreaseVolume();
            Assert.IsType <TelevisionOffState>(television.State);
            Assert.False(television.Powered);
            Assert.Null(television.Volume);
            Assert.Null(television.Muted);

            television.ToggleMute();
            Assert.IsType <TelevisionOffState>(television.State);
            Assert.False(television.Powered);
            Assert.Null(television.Volume);
            Assert.Null(television.Muted);


            // Let's power it up.
            television.TogglePower();
            Assert.IsType <TelevisionOnState>(television.State);
            Assert.True(television.Powered);
            Assert.Equal(2, television.Volume);
            Assert.False(television.Muted);

            television.LowerVolume();
            television.LowerVolume();
            television.LowerVolume();
            Assert.IsType <TelevisionOnState>(television.State);
            Assert.True(television.Powered);
            Assert.Equal(0, television.Volume);
            Assert.False(television.Muted);

            television.IncreaseVolume();
            television.IncreaseVolume();
            television.IncreaseVolume();
            Assert.IsType <TelevisionOnState>(television.State);
            Assert.True(television.Powered);
            Assert.Equal(3, television.Volume);
            Assert.False(television.Muted);

            television.ToggleMute();
            Assert.IsType <TelevisionMutedState>(television.State);
            Assert.True(television.Powered);
            Assert.Equal(3, television.Volume);
            Assert.True(television.Muted);

            television.IncreaseVolume();
            Assert.IsType <TelevisionOnState>(television.State);
            Assert.True(television.Powered);
            Assert.Equal(4, television.Volume);
            Assert.False(television.Muted);

            television.ToggleMute();
            television.ToggleMute();
            Assert.IsType <TelevisionOnState>(television.State);
            Assert.True(television.Powered);
            Assert.Equal(4, television.Volume);
            Assert.False(television.Muted);

            television.TogglePower();
            Assert.IsType <TelevisionOffState>(television.State);
            Assert.False(television.Powered);
            Assert.Null(television.Volume);
            Assert.Null(television.Muted);
        }