示例#1
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());
}