Exemplo n.º 1
0
        private static void BugTest()
        {
            // with Stateless

            var bug = new Bug("Incorrect stock count");

            bug.Assign("Joe");
            bug.Defer();
            bug.Assign("Harry");
            bug.Assign("Fred");
            bug.Close();

            Console.WriteLine();
            Console.WriteLine("State machine:");
            Console.WriteLine(bug.ToDotGraph());


            // with state pattern

            Context c = new Context();

            // Issue requests, which changes state
            c.Assign("Joe");
            c.Defer();
            c.Assign("Harry");
            c.Assign("Fred");
            c.Close();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Execute bug tracker example
        /// </summary>
        private static void ExecuteBugTrackerExample()
        {
            Console.WriteLine("**** Bug tracker state machine example ****");
            Console.WriteLine();

            var bug = new Bug("First bug");

            bug.Assign("Niko");
            Console.WriteLine();

            bug.Assign("Ivan");
            Console.WriteLine();

            bug.Defer();
            Console.WriteLine();

            bug.Assign("Harry");
            Console.WriteLine();

            bug.Assign("Fred");
            Console.WriteLine();

            bug.Assign("Arnold");
            Console.WriteLine();

            bug.Close();
        }
        public void Bug_WhenClosingNewBug_ThenExceptionIsThrown()
        {
            //Given
            Bug bug = new Bug();
            //When
            Action action = () => bug.Close("reason");

            //Then
            Should.Throw <DomainException>(action);
        }
        private static Bug CreateClosedBug()
        {
            var bug = new Bug();

            bug.Triage(Severity.High, Priority.High);
            bug.AssignUser(new User("testuser", UserRole.Dev));
            bug.Resolve();
            bug.Close("reason");
            return(bug);
        }
        public void Bug_WhenClosing_ThenNoUserIsAssigned()
        {
            //Given
            var bug = new Bug();

            bug.Triage(Severity.High, Priority.High);
            bug.AssignUser(new User("testuser", UserRole.Dev));
            var mondayDate = new DateTime(2017, 10, 2);

            TimeProvider.Current = new TestTimeProvider(mondayDate);
            bug.Resolve();
            //When
            bug.Close("reason");
            //Then
            bug.AssignedUser.ShouldBeNull();
        }