????(void)testViewControllerForSimpleURL
????{
????self.viewControllerA = (ViewControllerA *)[self.navigator
????viewControllerForURL:
????[NSURL URLWithString:@"um://viewa"]
????withQuery:nil];
????HC_assertThat(self.viewControllerA?? HC_instanceOf([UMViewController class]));
????HC_assertThat(self.viewControllerA?? HC_isA([ViewControllerA class]));
????}
????- (void)testViewControllerForURLWithArgs
????{
????self.viewControllerA = (ViewControllerA *)[self.navigator
????viewControllerForURL:[NSURL URLWithString:@"um://viewa?
????p1=v1&p2=v2"]
????withQuery:nil];
????HC_assertThat(self.viewControllerA?? HC_instanceOf([UMViewController class]));
????HC_assertThat(self.viewControllerA?? HC_isA([ViewControllerA class]));
????HC_assertThat([self.viewControllerA.params allKeys]?? HC_containsInAnyOrder
????(@"p1"?? @"p2"?? nil));
????GHAssertEqualStrings(self.viewControllerA.params[@"p1"]?? @"v1"?? @"param error.");
????GHAssertEqualStrings(self.viewControllerA.params[@"p2"]?? @"v2"?? @"param error.");
????}
????- (void)testViewControllerWithQuery
????{
????self.viewControllerA = (ViewControllerA *)[self.navigator
????viewControllerForURL:
????[NSURL URLWithString:@"um://viewa"]
????withQuery:@{@"k1":@"v1"?? @"k2":@"v2"}];
????HC_assertThat([self.viewControllerA.query allKeys]?? HC_containsInAnyOrder
????(@"k1"?? @"k2"?? nil));
????GHAssertEqualStrings(self.viewControllerA.query[@"k1"]?? @"v1"?? @"param error.");
????GHAssertEqualStrings(self.viewControllerA.query[@"k2"]?? @"v2"?? @"param error.");
????}
????- (void)testViewControllerForURLAndQuery
????{
????self.viewControllerA = (ViewControllerA *)[self.navigator
????viewControllerForURL:
????[NSURL URLWithString:@"um://viewa?p1=v1&p2=v2"]
????withQuery:@{@"k1":@"v1"?? @"k2":@"v2"}];
????HC_assertThat([self.viewControllerA.params allKeys]?? HC_containsInAnyOrder
????(@"p1"?? @"p2"?? nil));
????GHAssertEqualStrings(self.viewControllerA.params[@"p1"]?? @"v1"?? @"param error.");
????GHAssertEqualStrings(self.viewControllerA.params[@"p2"]?? @"v2"?? @"param error.");
????HC_assertThat([self.viewControllerA.query allKeys]?? HC_containsInAnyOrder
????(@"k1"?? @"k2"?? nil));
????GHAssertEqualStrings(self.viewControllerA.query[@"k1"]?? @"v1"?? @"param error.");
????GHAssertEqualStrings(self.viewControllerA.query[@"k2"]?? @"v2"?? @"param error.");
????}

????????16?????????URL????UMViewController??????
????????????????ζ???
??????????????????????????????????????????????????????ж??????????ж?ζ?????????????????????16??????????????????????????????????????????????????????????????????£????????????UMNavigationController??????17?????????????UMNavigationController?????????????RootViewController?????????????????????????ж?????????UINavigationController???????UMNavigationController?????????ж?rootViewController??????????viewControllers???????????

????(void)testInitWihtRootViewControllerURL
????{
????UMNavigationController *navigator = [[UMNavigationController alloc]
????initWithRootViewControllerURL:[NSURL URLWithString:@"um://viewb"]];
????HC_assertThat(navigator?? HC_instanceOf([UINavigationController class]));
????HC_assertThat(navigator?? HC_isA([UMNavigationController class]));
????HC_assertThat(navigator.rootViewController??
????HC_instanceOf([UMViewController class]));
????HC_assertThat(navigator.rootViewController?? HC_isA([ViewControllerB class]));
????HC_assertThatInteger(navigator.viewControllers.count?? HC_equalToInteger(1));
????HC_assertThat(navigator.viewControllers??
????HC_hasInAnyOrder(HC_instanceOf([UMViewController class])?? nil));
????HC_assertThat(navigator.viewControllers??
????HC_hasInAnyOrder(HC_isA([ViewControllerB class])?? nil));
????HC_assertThat(navigator.viewControllers??
????HC_hasInAnyOrder(HC_is(navigator.rootViewController)?? nil));
????}

????????17??????????UMNavigationController??????


???????
??????????????URLManager?е?17?δ????????????????????????ò??????????????????м?????????????????????????????????????????????????????????????????????????ù????л??????????塣?????????????????????????и?????Ч?????????????????????????????????????????????URLManager??????????????????????????