TEST_F(TestLink, InterestSelectedDelegation) { Link link; link.setName(Name("test")); link.addDelegation(10, Name("/test1")); link.addDelegation(20, Name("/test2")); link.addDelegation(100, Name("/test3")); keyChain_->sign(link, certificateName_); Blob linkEncoding = link.wireEncode(); Interest interestA; interestA.setLinkWireEncoding(linkEncoding); ASSERT_TRUE(interestA.getSelectedDelegationIndex() < 0); interestA.setSelectedDelegationIndex (link.getDelegations().find(Name("test2"))); ASSERT_TRUE(interestA.getSelectedDelegationIndex() >= 0); Link* link2 = interestA.getLink(); ASSERT_EQ (Name("test2"), link2->getDelegations().get(interestA.getSelectedDelegationIndex()).getName()); interestA.setSelectedDelegationIndex(-1); ASSERT_TRUE(interestA.getSelectedDelegationIndex() < 0); }
TEST_F(TestLink, InterestLinkObject) { Link link1; link1.setName(Name("test")); link1.addDelegation(10, Name("/test1")); link1.addDelegation(20, Name("/test2")); link1.addDelegation(100, Name("/test3")); keyChain_->sign(link1, certificateName_); Blob linkEncoding = link1.wireEncode(); Interest interestA; interestA.setLinkWireEncoding(linkEncoding); Link* link2 = interestA.getLink(); ASSERT_TRUE(link2); Name name = link2->getName(); ASSERT_EQ(Name("test"), name); const DelegationSet& delegations = link2->getDelegations(); for (size_t i = 0; i < delegations.size(); ++i) { if (i == 0) { ASSERT_EQ(10, delegations.get(i).getPreference()); ASSERT_EQ(Name("/test1"), delegations.get(i).getName()); } if (i == 1) { ASSERT_EQ(20, delegations.get(i).getPreference()); ASSERT_EQ(Name("/test2"), delegations.get(i).getName()); } if (i == 2) { ASSERT_EQ(100, delegations.get(i).getPreference()); ASSERT_EQ(Name("/test3"), delegations.get(i).getName()); } } interestA.setLinkWireEncoding(Blob(LINK, sizeof(LINK))); Link* link3 = interestA.getLink(); ASSERT_EQ(2, link3->getDelegations().size()); interestA.unsetLink(); ASSERT_EQ(false, interestA.hasLink()); }
TEST_F(TestLink, EncodeDecodeInterestWithLink) { Link link1; link1.setName(Name("test")); link1.addDelegation(10, Name("/test1")); link1.addDelegation(20, Name("/test2")); link1.addDelegation(100, Name("/test3")); keyChain_->sign(link1, certificateName_); Interest interestA; interestA.setName(Name("/Test/Encode/Decode/With/Link")); interestA.setChildSelector(1); interestA.setInterestLifetimeMilliseconds(10000); interestA.setLinkWireEncoding(link1.wireEncode()); Blob interestEncoding = interestA.wireEncode(); Interest interestB; interestB.wireDecode(interestEncoding); ASSERT_EQ(interestA.getName(), interestB.getName()); Link* link2 = interestB.getLink(); ASSERT_TRUE(link2) << "Interest link object not specified"; const DelegationSet& delegations = link2->getDelegations(); for (size_t i = 0; i < delegations.size(); ++i) { if (i == 0) { ASSERT_EQ(10, delegations.get(i).getPreference()); ASSERT_EQ(Name("/test1"), delegations.get(i).getName()); } if (i == 1) { ASSERT_EQ(20, delegations.get(i).getPreference()); ASSERT_EQ(Name("/test2"), delegations.get(i).getName()); } if (i == 2) { ASSERT_EQ(100, delegations.get(i).getPreference()); ASSERT_EQ(Name("/test3"), delegations.get(i).getName()); } } }