Resolve() public method

Attempts to resolve the configuration. Null if an error occurred.
public Resolve ( IActivityMonitor monitor ) : RouteConfigurationResult
monitor IActivityMonitor Monitor to use. Must not be null.
return RouteConfigurationResult
        public void RoutesAndActions()
        {
            RouteConfiguration c = 
                new RouteConfiguration()
                    .AddAction(
                        new ActionSequenceConfiguration( "FirstGroup" )
                            .AddAction( new TestActionConfiguration( "Sink1" ) )
                            .AddAction( new TestActionConfiguration( "Sink2" ) )
                            .AddAction( new ActionParallelConfiguration( "Parallel n°1" )
                                .AddAction( new TestActionConfiguration( "Sink3" ) )
                                .AddAction( new TestActionConfiguration( "Sink4" ) ) )
                            .AddAction( new ActionParallelConfiguration( "Parallel n°2" )
                                .AddAction( new TestActionConfiguration( "Sink3" ) )
                                .AddAction( new TestActionConfiguration( "Sink4" ) ) ) )
                    .AddAction( new TestActionConfiguration( "SecondGlobal" ) )
                    .DeclareRoute(
                        new SubRouteConfiguration( "CKTask", name => name.StartsWith( "CKTask:" ) )
                            .AddAction( new TestActionConfiguration( "TaskSink" ) ) 
                            .RemoveAction( "SecondGlobal" ) )
                    .AddAction( new TestActionConfiguration( "ForAllExceptCKTask" ) )
                    .DeclareRoute(
                        new SubRouteConfiguration( "Request", name => name.Contains( "/request/" ) )
                            .RemoveAction( "FirstGroup" )
                            .AddAction( new TestActionConfiguration( "RequestSink" ) )
                            .AddAction( new TestActionConfiguration( "AnotherRequestSink" ) )
                            .DeclareRoute(
                                new SubRouteConfiguration( "NoBugInRequest", name => name.Contains( "/BugFree/" ) ) { ImportParentActions = false } ) );
            
            var resolved = c.Resolve( TestHelper.ConsoleMonitor );
            Assert.That( resolved, Is.Not.Null );
            Assert.That( resolved.AllSubRoutes.Count, Is.EqualTo( 3 ) );

            var root = resolved.Root;
            Assert.That( root, Is.Not.Null );
            Assert.That( root.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 3 ) );

            var ckTask = resolved.FindSubRouteByName( "CKTask" );
            Assert.That( ckTask, Is.Not.Null );
            Assert.That( ckTask.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 2 ) );
            
            var request = resolved.FindSubRouteByName( "Request" );
            Assert.That( request, Is.Not.Null );
            Assert.That( request.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 4 ) );

            var noBug = resolved.FindSubRouteByName( "NoBugInRequest" );
            Assert.That( noBug, Is.Not.Null );
            Assert.That( noBug.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 0 ) );

        }
 public void InvalidNames()
 {
     {
         Assert.Throws<ArgumentNullException>( () => new RouteConfiguration().DeclareRoute( new SubRouteConfiguration( null, x => true ) ) );
         Assert.Throws<ArgumentNullException>( () => new RouteConfiguration().AddAction( new TestActionConfiguration( null ) ) );
     }
     RouteConfiguration c;
     {
         c = new RouteConfiguration()
                 .DeclareRoute( new SubRouteConfiguration( "", x => true )
                     .DeclareRoute( new SubRouteConfiguration( "", x => true ) ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null, "A route name can be empty but not 2 can be empty at the same time. The name of the root RouteConfiguration is always the empty string." );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new TestActionConfiguration( "" ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new TestActionConfiguration( "/" ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new TestActionConfiguration( "A/B" ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
 }
 public void ActionNamesConflict()
 {
     RouteConfiguration c;
     {
         c = new RouteConfiguration()
                 .AddAction( new TestActionConfiguration( "Name" ) )
                 .AddAction( new TestActionConfiguration( "Name" ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new ActionParallelConfiguration( "Parallel" )
                     .AddAction( new TestActionConfiguration( "Name" ) )
                     .AddAction( new TestActionConfiguration( "Name" ) ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new ActionSequenceConfiguration( "Sequence" )
                     .AddAction( new TestActionConfiguration( "Name" ) )
                     .AddAction( new TestActionConfiguration( "Name" ) ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new TestActionConfiguration( "Name" ) )
                 .AddAction( new ActionSequenceConfiguration( "FirstGroup" )
                     .AddAction( new TestActionConfiguration( "Name" ) ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Not.Null, "Sequence acts as a namespace." );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new ActionSequenceConfiguration( "G1" )
                     .AddAction( new TestActionConfiguration( "Name" ) ) )
                 .AddAction( new ActionSequenceConfiguration( "G2" )
                     .AddAction( new TestActionConfiguration( "Name" ) ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Not.Null, "Sequence hide names below them." );
     }
     {
         c = new RouteConfiguration()
                 .AddAction( new ActionSequenceConfiguration( "G1" )
                     .AddAction( new TestActionConfiguration( "Name" ) ) )
                 .AddAction( new ActionParallelConfiguration( "P1" )
                     .AddAction( new TestActionConfiguration( "Name" ) ) )
                 .AddAction( new ActionParallelConfiguration( "P2" )
                     .AddAction( new TestActionConfiguration( "Name" ) ) )
                 .AddAction( new ActionSequenceConfiguration( "G2" )
                     .AddAction( new TestActionConfiguration( "Name" ) ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Not.Null, "Parallels also hide names below them." );
     }
 }
 public void RouteNamesConflict()
 {
     RouteConfiguration c;
     {
         c = new RouteConfiguration()
                 .DeclareRoute( new SubRouteConfiguration( "Name", x => true ) )
                 .DeclareRoute( new SubRouteConfiguration( "Name", x => true ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
     {
         c = new RouteConfiguration()
                 .DeclareRoute( new SubRouteConfiguration( "Name", x => true )
                     .DeclareRoute( new SubRouteConfiguration( "Name", x => true ) ) );
         Assert.That( c.Resolve( TestHelper.ConsoleMonitor ), Is.Null );
     }
 }