| Index: net/dns/record_parsed_unittest.cc
|
| diff --git a/net/dns/record_parsed_unittest.cc b/net/dns/record_parsed_unittest.cc
|
| index bb82b53b02eda68b90d41c57ef5f0fda0606a821..3bfecabc438abb7fd0043592f724f2a89fbdbe1b 100644
|
| --- a/net/dns/record_parsed_unittest.cc
|
| +++ b/net/dns/record_parsed_unittest.cc
|
| @@ -12,6 +12,24 @@
|
|
|
| namespace net {
|
|
|
| +static const char kT1ResponseWithCacheFlushBit[] = {
|
| + 0x0a, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w',
|
| + 0x08, 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm',
|
| + 0x03, 'o', 'r', 'g',
|
| + 0x00,
|
| + 0x00, 0x05, // TYPE is CNAME.
|
| + 0x80, 0x01, // CLASS is IN with cache flush bit set.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x12, // RDLENGTH is 18 bytes.
|
| + // ghs.l.google.com in DNS format.
|
| + 0x03, 'g', 'h', 's',
|
| + 0x01, 'l',
|
| + 0x06, 'g', 'o', 'o', 'g', 'l', 'e',
|
| + 0x03, 'c', 'o', 'm',
|
| + 0x00
|
| +};
|
| +
|
| TEST(RecordParsedTest, ParseSingleRecord) {
|
| DnsRecordParser parser(kT1ResponseDatagram, sizeof(kT1ResponseDatagram),
|
| sizeof(dns_protocol::Header));
|
| @@ -19,7 +37,7 @@ TEST(RecordParsedTest, ParseSingleRecord) {
|
| const CnameRecordRdata* rdata;
|
|
|
| parser.SkipQuestion();
|
| - record = RecordParsed::CreateFrom(&parser);
|
| + record = RecordParsed::CreateFrom(&parser, base::Time());
|
| EXPECT_TRUE(record != NULL);
|
|
|
| ASSERT_EQ("codereview.chromium.org", record->name());
|
| @@ -31,5 +49,52 @@ TEST(RecordParsedTest, ParseSingleRecord) {
|
| ASSERT_EQ(kT1CanonName, rdata->cname());
|
|
|
| ASSERT_FALSE(record->rdata<SrvRecordRdata>());
|
| + ASSERT_TRUE(record->IsEqual(record.get(), true));
|
| +}
|
| +
|
| +TEST(RecordParsedTest, CopyConstructor) {
|
| + DnsRecordParser parser(kT1ResponseDatagram, sizeof(kT1ResponseDatagram),
|
| + sizeof(dns_protocol::Header));
|
| + scoped_ptr<const RecordParsed> record;
|
| + const CnameRecordRdata* rdata;
|
| +
|
| + parser.SkipQuestion();
|
| + record = RecordParsed::CreateFrom(&parser, base::Time());
|
| + EXPECT_TRUE(record.get() != NULL);
|
| +
|
| + scoped_ptr<RecordParsed> record2;
|
| + record2.reset(new RecordParsed(*record));
|
| +
|
| + record.reset();
|
| +
|
| + ASSERT_EQ("codereview.chromium.org", record2->name());
|
| + ASSERT_EQ(dns_protocol::kTypeCNAME, record2->type());
|
| + ASSERT_EQ(dns_protocol::kClassIN, record2->klass());
|
| +
|
| + rdata = record2->rdata<CnameRecordRdata>();
|
| + EXPECT_TRUE(rdata != NULL);
|
| + ASSERT_EQ(kT1CanonName, rdata->cname());
|
| +
|
| + ASSERT_FALSE(record2->rdata<SrvRecordRdata>());
|
| +}
|
| +
|
| +TEST(RecordParsedTest, CacheFlushBitCompare) {
|
| + DnsRecordParser parser1(kT1ResponseDatagram, sizeof(kT1ResponseDatagram),
|
| + sizeof(dns_protocol::Header));
|
| + parser1.SkipQuestion();
|
| + scoped_ptr<const RecordParsed> record1 =
|
| + RecordParsed::CreateFrom(&parser1, base::Time());
|
| +
|
| + DnsRecordParser parser2(kT1ResponseWithCacheFlushBit,
|
| + sizeof(kT1ResponseWithCacheFlushBit),
|
| + 0);
|
| +
|
| + scoped_ptr<const RecordParsed> record2 =
|
| + RecordParsed::CreateFrom(&parser2, base::Time());
|
| +
|
| + EXPECT_FALSE(record1->IsEqual(record2.get(), false));
|
| + EXPECT_TRUE(record1->IsEqual(record2.get(), true));
|
| + EXPECT_FALSE(record2->IsEqual(record1.get(), false));
|
| + EXPECT_TRUE(record2->IsEqual(record1.get(), true));
|
| }
|
| }
|
|
|