forked from DFHack/dfhack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBitArray.test.cpp
More file actions
67 lines (52 loc) · 1.48 KB
/
BitArray.test.cpp
File metadata and controls
67 lines (52 loc) · 1.48 KB
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
#include "BitArray.h"
#include "df/job_list_link.h"
#include <gtest/gtest.h>
class DFLinkedListTest : public testing::Test {
protected:
DFLinkedListTest() {}
df::job_list_link list;
};
TEST_F(DFLinkedListTest, edit){
EXPECT_TRUE(list.empty());
EXPECT_EQ(list.size(), 0);
EXPECT_EQ(list.begin(), list.end());
auto *job1 = new df::job();
job1->id = 1;
auto *job2 = new df::job();
job2->id = 2;
auto *job3 = new df::job();
job3->id = 3;
list.push_front(job1); // { 1 }
EXPECT_EQ(list.next->prev, &list);
auto it = list.begin();
EXPECT_EQ((*it)->id, 1);
EXPECT_EQ(job1->list_link->item, job1);
it = list.insert_after(it,job2); // { 1 2 }
EXPECT_EQ((*it)->id,2);
EXPECT_EQ(job2->list_link->item, job2);
it = list.insert(it,job3); // { 1 3 2 }
EXPECT_EQ((*it)->id,3);
EXPECT_EQ(job3->list_link->item, job3);
++it;
EXPECT_EQ(*it, job2);
--it;
EXPECT_EQ(*it, job3);
it = list.erase(it); // { 1 2 }
EXPECT_EQ(job3->list_link, nullptr);
EXPECT_EQ(*it, job2);
EXPECT_EQ(list.size(), 2);
it = list.end();
EXPECT_THROW(list.insert_after(it,job3),DFHack::Error::InvalidArgument);
--it; // linear search for end()-1
EXPECT_EQ(*it, job2);
while (!list.empty())
{
list.erase(list.begin());
}
EXPECT_EQ(list.size(), 0);
EXPECT_EQ(job2->list_link, nullptr);
EXPECT_EQ(job1->list_link, nullptr);
delete job1;
delete job2;
delete job3;
}