summaryrefslogtreecommitdiff
path: root/src/gui/sdlfont_unittest.cc
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-04-24 23:40:18 +0300
committerAndrei Karas <akaras@inbox.ru>2013-04-25 16:35:59 +0300
commita2af9029410b20748b053bf0ca6f78ee27efef9e (patch)
tree3754ad6f8ebd51bf54ccc041bb00e2e7f5eebbdc /src/gui/sdlfont_unittest.cc
parent0d300e7aa5699154810af67282dacbcd65929768 (diff)
downloadmanaplus-a2af9029410b20748b053bf0ca6f78ee27efef9e.tar.gz
manaplus-a2af9029410b20748b053bf0ca6f78ee27efef9e.tar.bz2
manaplus-a2af9029410b20748b053bf0ca6f78ee27efef9e.tar.xz
manaplus-a2af9029410b20748b053bf0ca6f78ee27efef9e.zip
in sdlfont add map for fast search in list.
Diffstat (limited to 'src/gui/sdlfont_unittest.cc')
-rw-r--r--src/gui/sdlfont_unittest.cc179
1 files changed, 153 insertions, 26 deletions
diff --git a/src/gui/sdlfont_unittest.cc b/src/gui/sdlfont_unittest.cc
index 31b76f131..a372d2867 100644
--- a/src/gui/sdlfont_unittest.cc
+++ b/src/gui/sdlfont_unittest.cc
@@ -34,13 +34,15 @@ TEST(TextChunkList, empty)
EXPECT_EQ(0, list.size);
EXPECT_EQ(nullptr, list.start);
EXPECT_EQ(nullptr, list.end);
+ EXPECT_EQ(0, list.search.size());
}
TEST(TextChunkList, add1)
{
TextChunkList list;
- SDLTextChunk *chunk = new SDLTextChunk("test", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 3, 4));
list.insertFirst(chunk);
@@ -49,14 +51,21 @@ TEST(TextChunkList, add1)
EXPECT_EQ(chunk, list.end);
EXPECT_EQ(nullptr, chunk->prev);
EXPECT_EQ(nullptr, chunk->next);
+
+ EXPECT_EQ(1, list.search.size());
+
+ EXPECT_EQ(chunk, (*list.search.find(SDLTextChunkSmall(
+ chunk->text, chunk->color, chunk->color2))).second);
}
TEST(TextChunkList, add2)
{
TextChunkList list;
- SDLTextChunk *chunk1 = new SDLTextChunk("test", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(3, 4, 5));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test",
+ gcn::Color(2, 3, 4), gcn::Color(4, 5, 6));
list.insertFirst(chunk2);
list.insertFirst(chunk1);
@@ -68,13 +77,19 @@ TEST(TextChunkList, add2)
EXPECT_EQ(chunk2, chunk1->next);
EXPECT_EQ(chunk1, chunk2->prev);
EXPECT_EQ(nullptr, chunk2->next);
+ EXPECT_EQ(2, list.search.size());
+ EXPECT_EQ(chunk1, (*list.search.find(SDLTextChunkSmall(
+ chunk1->text, chunk1->color, chunk1->color2))).second);
+ EXPECT_EQ(chunk2, (*list.search.find(SDLTextChunkSmall(
+ chunk2->text, chunk2->color, chunk2->color2))).second);
}
TEST(TextChunkList, addRemoveBack1)
{
TextChunkList list;
- SDLTextChunk *chunk = new SDLTextChunk("test", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
list.insertFirst(chunk);
list.removeBack();
@@ -82,14 +97,17 @@ TEST(TextChunkList, addRemoveBack1)
EXPECT_EQ(0, list.size);
EXPECT_EQ(nullptr, list.start);
EXPECT_EQ(nullptr, list.end);
+ EXPECT_EQ(0, list.search.size());
}
TEST(TextChunkList, addRemoveBack2)
{
TextChunkList list;
- SDLTextChunk *chunk1 = new SDLTextChunk("test", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test2",
+ gcn::Color(1, 2, 4), gcn::Color(1, 2, 5));
list.insertFirst(chunk2);
list.insertFirst(chunk1);
@@ -100,14 +118,19 @@ TEST(TextChunkList, addRemoveBack2)
EXPECT_EQ(chunk1, list.end);
EXPECT_EQ(nullptr, chunk1->prev);
EXPECT_EQ(nullptr, chunk1->next);
+ EXPECT_EQ(1, list.search.size());
+ EXPECT_EQ(chunk1, (*list.search.find(SDLTextChunkSmall(
+ chunk1->text, chunk1->color, chunk1->color2))).second);
}
TEST(TextChunkList, addRemoveBack3)
{
TextChunkList list;
- SDLTextChunk *chunk1 = new SDLTextChunk("test", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test2",
+ gcn::Color(2, 3, 4), gcn::Color(2, 3, 4));
list.insertFirst(chunk2);
list.insertFirst(chunk1);
@@ -116,15 +139,19 @@ TEST(TextChunkList, addRemoveBack3)
EXPECT_EQ(0, list.size);
EXPECT_EQ(nullptr, list.start);
EXPECT_EQ(nullptr, list.end);
+ EXPECT_EQ(0, list.search.size());
}
TEST(TextChunkList, addRemoveBack4)
{
TextChunkList list;
- SDLTextChunk *chunk1 = new SDLTextChunk("test", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk3 = new SDLTextChunk("test3", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test2",
+ gcn::Color(2, 3, 4), gcn::Color(2, 3, 4));
+ SDLTextChunk *chunk3 = new SDLTextChunk("test",
+ gcn::Color(3, 4, 5), gcn::Color(3, 4, 5));
list.insertFirst(chunk3);
list.insertFirst(chunk2);
@@ -137,13 +164,17 @@ TEST(TextChunkList, addRemoveBack4)
EXPECT_EQ(chunk1, list.end);
EXPECT_EQ(nullptr, chunk1->prev);
EXPECT_EQ(nullptr, chunk1->next);
+ EXPECT_EQ(1, list.search.size());
+ EXPECT_EQ(chunk1, (*list.search.find(SDLTextChunkSmall(
+ chunk1->text, chunk1->color, chunk1->color2))).second);
}
TEST(TextChunkList, moveToFirst1)
{
TextChunkList list;
- SDLTextChunk *chunk = new SDLTextChunk("test", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 3, 4));
list.insertFirst(chunk);
list.moveToFirst(chunk);
@@ -159,8 +190,10 @@ TEST(TextChunkList, moveToFirst2)
{
TextChunkList list;
- SDLTextChunk *chunk1 = new SDLTextChunk("test", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test",
+ gcn::Color(2, 3, 4), gcn::Color(1, 2, 3));
list.insertFirst(chunk1);
list.insertFirst(chunk2);
@@ -179,9 +212,12 @@ TEST(TextChunkList, moveToFirst3)
{
TextChunkList list;
- SDLTextChunk *chunk1 = new SDLTextChunk("test", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk3 = new SDLTextChunk("test3", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 4), gcn::Color(1, 2, 3));
+ SDLTextChunk *chunk3 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 5), gcn::Color(1, 2, 3));
list.insertFirst(chunk3);
list.insertFirst(chunk1);
@@ -237,6 +273,7 @@ TEST(TextChunkList, clear1)
EXPECT_EQ(nullptr, list.start);
EXPECT_EQ(nullptr, list.end);
EXPECT_EQ(chunksLeft, sdlTextChunkCnt);
+ EXPECT_EQ(0, list.search.size());
}
TEST(TextChunkList, clear2)
@@ -244,9 +281,12 @@ TEST(TextChunkList, clear2)
TextChunkList list;
int chunksLeft = sdlTextChunkCnt;
- SDLTextChunk *chunk1 = new SDLTextChunk("test1", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk3 = new SDLTextChunk("test3", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 0));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 1));
+ SDLTextChunk *chunk3 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 2));
list.insertFirst(chunk1);
list.insertFirst(chunk2);
@@ -257,6 +297,7 @@ TEST(TextChunkList, clear2)
EXPECT_EQ(nullptr, list.start);
EXPECT_EQ(nullptr, list.end);
EXPECT_EQ(chunksLeft, sdlTextChunkCnt);
+ EXPECT_EQ(0, list.search.size());
}
TEST(TextChunkList, clear3)
@@ -264,21 +305,27 @@ TEST(TextChunkList, clear3)
TextChunkList list;
int chunksLeft = sdlTextChunkCnt;
- SDLTextChunk *chunk1 = new SDLTextChunk("test1", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk3 = new SDLTextChunk("test3", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 0));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 1));
+ SDLTextChunk *chunk3 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 2));
list.insertFirst(chunk1);
list.insertFirst(chunk2);
list.insertFirst(chunk3);
list.moveToFirst(chunk1);
EXPECT_EQ(chunksLeft + 3, sdlTextChunkCnt);
+ EXPECT_EQ(3, list.search.size());
list.removeBack();
EXPECT_EQ(chunksLeft + 2, sdlTextChunkCnt);
+ EXPECT_EQ(2, list.search.size());
list.clear();
EXPECT_EQ(chunksLeft, sdlTextChunkCnt);
+ EXPECT_EQ(0, list.search.size());
}
TEST(TextChunkList, clear4)
@@ -286,19 +333,99 @@ TEST(TextChunkList, clear4)
TextChunkList list;
int chunksLeft = sdlTextChunkCnt;
- SDLTextChunk *chunk1 = new SDLTextChunk("test1", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk2 = new SDLTextChunk("test2", gcn::Color(), gcn::Color());
- SDLTextChunk *chunk3 = new SDLTextChunk("test3", gcn::Color(), gcn::Color());
+ SDLTextChunk *chunk1 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 0));
+ SDLTextChunk *chunk2 = new SDLTextChunk("test",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 1));
+ SDLTextChunk *chunk3 = new SDLTextChunk("test3",
+ gcn::Color(1, 2, 3), gcn::Color(2, 0, 2));
list.insertFirst(chunk1);
list.insertFirst(chunk2);
list.insertFirst(chunk3);
list.moveToFirst(chunk2);
EXPECT_EQ(chunksLeft + 3, sdlTextChunkCnt);
+ EXPECT_EQ(3, list.search.size());
list.removeBack(2);
EXPECT_EQ(chunksLeft + 1, sdlTextChunkCnt);
+ EXPECT_EQ(1, list.search.size());
list.clear();
EXPECT_EQ(chunksLeft, sdlTextChunkCnt);
+ EXPECT_EQ(0, list.search.size());
+}
+
+TEST(TextChunkList, sort1)
+{
+ SDLTextChunkSmall item1("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item2("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item3("test line2",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ EXPECT_EQ(false, item1 < item2);
+ EXPECT_EQ(false, item2 < item1);
+ EXPECT_EQ(true, item1 < item3);
+ EXPECT_EQ(false, item3 < item1);
+}
+
+TEST(TextChunkList, sort2)
+{
+ SDLTextChunkSmall item1("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item2("test line1",
+ gcn::Color(2, 3, 4), gcn::Color(1, 2, 3));
+ EXPECT_EQ(true, item1 < item2);
+ EXPECT_EQ(false, item2 < item1);
+}
+
+TEST(TextChunkList, sort3)
+{
+ SDLTextChunkSmall item1("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item2("test line1",
+ gcn::Color(1, 3, 4), gcn::Color(1, 2, 3));
+ EXPECT_EQ(true, item1 < item2);
+ EXPECT_EQ(false, item2 < item1);
+}
+
+TEST(TextChunkList, sort4)
+{
+ SDLTextChunkSmall item1("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item2("test line1",
+ gcn::Color(1, 2, 4), gcn::Color(1, 2, 3));
+ EXPECT_EQ(true, item1 < item2);
+ EXPECT_EQ(false, item2 < item1);
+}
+
+TEST(TextChunkList, sort5)
+{
+ SDLTextChunkSmall item1("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item2("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(2, 2, 3));
+ EXPECT_EQ(true, item1 < item2);
+ EXPECT_EQ(false, item2 < item1);
+}
+
+TEST(TextChunkList, sort6)
+{
+ SDLTextChunkSmall item1("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item2("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 3, 3));
+ EXPECT_EQ(true, item1 < item2);
+ EXPECT_EQ(false, item2 < item1);
+}
+
+TEST(TextChunkList, sort7)
+{
+ SDLTextChunkSmall item1("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 3));
+ SDLTextChunkSmall item2("test line1",
+ gcn::Color(1, 2, 3), gcn::Color(1, 2, 4));
+ EXPECT_EQ(true, item1 < item2);
+ EXPECT_EQ(false, item2 < item1);
}