@@ -14,10 +14,78 @@ namespace UnitTests
14
14
public:
15
15
TEST_METHOD (General)
16
16
{
17
- std::string str = " So long as they don't get violent, I want to let everyone say what they wish, "
18
- " for I myself have always said exactly what pleased me. – Albert Einstein" ;
17
+ char quote[] = " When you are presented with a choice between two evils, "
18
+ " do not choose the lesser. Choose the exit. - Robert Higgs" ;
19
+
20
+ // Default constructor
21
+ {
22
+ BufferView bview;
23
+ Assert::AreEqual (false , bview.operator bool ());
24
+ Assert::AreEqual (true , bview.IsEmpty ());
25
+ Assert::AreEqual (true , bview.GetSize () == 0 );
26
+ Assert::AreEqual (true , bview.GetBytes () == nullptr );
27
+ }
28
+
29
+ // nullptr constructor
30
+ {
31
+ BufferView bview;
32
+ Assert::AreEqual (false , bview.operator bool ());
33
+ Assert::AreEqual (true , bview.IsEmpty ());
34
+ Assert::AreEqual (true , bview.GetSize () == 0 );
35
+ Assert::AreEqual (true , bview.GetBytes () == nullptr );
36
+ }
37
+
38
+ // Copy constructor
39
+ {
40
+ BufferView bview1 (reinterpret_cast <Byte*>(quote), sizeof (quote));
41
+
42
+ BufferView bview2 (bview1);
43
+ Assert::AreEqual (true , bview2.operator bool ());
44
+ Assert::AreEqual (false , bview2.IsEmpty ());
45
+ Assert::AreEqual (true , bview2.GetSize () == 115 );
46
+ Assert::AreEqual (true , bview2.GetBytes () != nullptr );
47
+ }
48
+
49
+ // Copy assignment
50
+ {
51
+ BufferView bview1 (reinterpret_cast <Byte*>(quote), sizeof (quote));
52
+
53
+ BufferView bview2 = bview1;
54
+ Assert::AreEqual (true , bview2.operator bool ());
55
+ Assert::AreEqual (false , bview2.IsEmpty ());
56
+ Assert::AreEqual (true , bview2.GetSize () == 115 );
57
+ Assert::AreEqual (true , bview2.GetBytes () != nullptr );
58
+ }
59
+
60
+ // Move constructor
61
+ {
62
+ BufferView bview1 (reinterpret_cast <Byte*>(quote), sizeof (quote));
63
+
64
+ BufferView bview2 (std::move (bview1));
65
+ Assert::AreEqual (true , bview2.operator bool ());
66
+ Assert::AreEqual (false , bview2.IsEmpty ());
67
+ Assert::AreEqual (true , bview2.GetSize () == 115 );
68
+ Assert::AreEqual (true , bview2.GetBytes () != nullptr );
69
+ }
70
+
71
+ // Move assignment
72
+ {
73
+ BufferView bview1 (reinterpret_cast <Byte*>(quote), sizeof (quote));
74
+
75
+ BufferView bview2 = std::move (bview1);
76
+ Assert::AreEqual (true , bview2.operator bool ());
77
+ Assert::AreEqual (false , bview2.IsEmpty ());
78
+ Assert::AreEqual (true , bview2.GetSize () == 115 );
79
+ Assert::AreEqual (true , bview2.GetBytes () != nullptr );
80
+ }
81
+ }
82
+
83
+ TEST_METHOD (Operations)
84
+ {
85
+ char quote[] = " So long as they don't get violent, I want to let everyone say what they wish, "
86
+ " for I myself have always said exactly what pleased me. – Albert Einstein" ;
19
87
20
- Buffer buf (reinterpret_cast <Byte*>(str. data ()), str. size ( ));
88
+ Buffer buf (reinterpret_cast <Byte*>(quote), sizeof (quote ));
21
89
22
90
BufferView bview (buf);
23
91
Assert::AreEqual (true , bview.operator bool ());
@@ -27,8 +95,8 @@ namespace UnitTests
27
95
bview.RemoveFirst (3 );
28
96
Assert::AreEqual (true , (bview.GetSize () == buf.GetSize () - 3 ));
29
97
30
- bview.RemoveLast (9 );
31
- Assert::AreEqual (true , (bview.GetSize () == buf.GetSize () - 12 ));
98
+ bview.RemoveLast (10 );
99
+ Assert::AreEqual (true , (bview.GetSize () == buf.GetSize () - 13 ));
32
100
33
101
Assert::AreEqual (true , (bview[0 ] == Byte{ ' l' }));
34
102
Assert::AreEqual (true , (bview[bview.GetSize () - 1 ] == Byte{ ' t' }));
@@ -38,6 +106,7 @@ namespace UnitTests
38
106
39
107
auto bviewsub = bview.GetSubView (0 , 4 );
40
108
Assert::AreEqual (true , (bviewsub.GetSize () == 4 ));
109
+ Assert::AreEqual (true , std::memcmp (bviewsub.GetBytes (), " long" , bviewsub.GetSize ()) == 0 );
41
110
42
111
Assert::AreEqual (true , (bviewsub == bviewf));
43
112
@@ -46,6 +115,7 @@ namespace UnitTests
46
115
47
116
auto bviewsub2 = bview.GetSubView (bview.GetSize ()-6 , 6 );
48
117
Assert::AreEqual (true , (bviewsub2.GetSize () == 6 ));
118
+ Assert::AreEqual (true , std::memcmp (bviewsub2.GetBytes (), " Albert" , bviewsub2.GetSize ()) == 0 );
49
119
50
120
Assert::AreEqual (true , (bviewsub2 == bviewl));
51
121
0 commit comments