File: logged_test-inl.h

package info (click to toggle)
golang-github-google-certificate-transparency 0.0~git20160709.0.0f6e3d1~ds1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster
  • size: 5,676 kB
  • sloc: cpp: 35,278; python: 11,838; java: 1,911; sh: 1,885; makefile: 950; xml: 520; ansic: 225
file content (107 lines) | stat: -rw-r--r-- 2,175 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/* -*- indent-tabs-mode: nil -*- */
#ifndef CERT_TRANS_LOG_LOGGED_TEST_INL_H_
#define CERT_TRANS_LOG_LOGGED_TEST_INL_H_

#include <string>

#include "proto/cert_serializer.h"
#include "util/testing.h"


template <class Logged>
class LoggedTest : public ::testing::Test {
 protected:
};

TYPED_TEST_CASE(LoggedTest, TestType);

TYPED_TEST(LoggedTest, NonEmptyHash) {
  TypeParam l1;
  l1.RandomForTest();

  EXPECT_FALSE(l1.Hash().empty());
}

TYPED_TEST(LoggedTest, SequenceIsPreserved) {
  TypeParam l1;
  l1.set_sequence_number(42);
  EXPECT_EQ(l1.sequence_number(), (int64_t)42);
}

TYPED_TEST(LoggedTest, SequenceIsNotPreserved) {
  TypeParam l1;
  l1.set_sequence_number(42);
  EXPECT_EQ(l1.sequence_number(), (int64_t)42);

  std::string s1;
  EXPECT_TRUE(l1.SerializeForDatabase(&s1));

  TypeParam l2;
  EXPECT_TRUE(l2.ParseFromDatabase(s1));
  EXPECT_FALSE(l2.has_sequence_number());
}

TYPED_TEST(LoggedTest, DifferentHash) {
  TypeParam l1;
  l1.RandomForTest();

  TypeParam l2;
  l2.RandomForTest();

  EXPECT_NE(l1.Hash(), l2.Hash());
}

TYPED_TEST(LoggedTest, SerializationPreservesHash) {
  TypeParam l1;
  l1.RandomForTest();

  std::string s1;
  EXPECT_TRUE(l1.SerializeForDatabase(&s1));

  TypeParam l2;
  EXPECT_TRUE(l2.ParseFromDatabase(s1));

  EXPECT_EQ(l1.Hash(), l2.Hash());
}

TYPED_TEST(LoggedTest, SerializationPreservesMerkleSerialization) {
  TypeParam l1;
  l1.RandomForTest();

  std::string d1;
  EXPECT_TRUE(l1.SerializeForDatabase(&d1));

  TypeParam l2;
  EXPECT_TRUE(l2.ParseFromDatabase(d1));

  std::string s1;
  EXPECT_TRUE(l1.SerializeForLeaf(&s1));
  std::string s2;
  EXPECT_TRUE(l2.SerializeForLeaf(&s2));

  EXPECT_EQ(s1, s2);
}

TYPED_TEST(LoggedTest, DifferentMerkleSerialization) {
  TypeParam l1;
  l1.RandomForTest();

  TypeParam l2;
  l2.RandomForTest();

  std::string s1;
  EXPECT_TRUE(l1.SerializeForLeaf(&s1));
  std::string s2;
  EXPECT_TRUE(l2.SerializeForLeaf(&s2));

  EXPECT_NE(s1, s2);
}

int main(int argc, char** argv) {
  cert_trans::test::InitTesting(argv[0], &argc, &argv, true);
  ConfigureSerializerForV1CT();
  srand(time(NULL));
  return RUN_ALL_TESTS();
}

#endif  // CERT_TRANS_LOG_LOGGED_TEST_INL_H_