1#include <engine/external/json-parser/json.h>
2#include <engine/serverbrowser.h>
3#include <engine/shared/serverinfo.h>
4
5#include <gtest/gtest.h>
6
7TEST(ServerInfo, ParseLocation)
8{
9 int Result;
10 EXPECT_TRUE(CServerInfo::ParseLocation(&Result, "xx"));
11 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "an"));
12 EXPECT_EQ(Result, CServerInfo::LOC_UNKNOWN);
13 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "af"));
14 EXPECT_EQ(Result, CServerInfo::LOC_AFRICA);
15 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "eu-n"));
16 EXPECT_EQ(Result, CServerInfo::LOC_EUROPE);
17 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "na"));
18 EXPECT_EQ(Result, CServerInfo::LOC_NORTH_AMERICA);
19 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "sa"));
20 EXPECT_EQ(Result, CServerInfo::LOC_SOUTH_AMERICA);
21 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "as:e"));
22 EXPECT_EQ(Result, CServerInfo::LOC_ASIA);
23 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "as:cn"));
24 EXPECT_EQ(Result, CServerInfo::LOC_CHINA);
25 EXPECT_FALSE(CServerInfo::ParseLocation(&Result, "oc"));
26 EXPECT_EQ(Result, CServerInfo::LOC_AUSTRALIA);
27}
28
29static unsigned int ParseCrcOrDeadbeef(const char *pString)
30{
31 unsigned int Result;
32 if(ParseCrc(pResult: &Result, pString))
33 {
34 Result = 0xdeadbeef;
35 }
36 return Result;
37}
38
39TEST(ServerInfo, Crc)
40{
41 EXPECT_EQ(ParseCrcOrDeadbeef("00000000"), 0);
42 EXPECT_EQ(ParseCrcOrDeadbeef("00000001"), 1);
43 EXPECT_EQ(ParseCrcOrDeadbeef("12345678"), 0x12345678);
44 EXPECT_EQ(ParseCrcOrDeadbeef("9abcdef0"), 0x9abcdef0);
45
46 EXPECT_EQ(ParseCrcOrDeadbeef(""), 0xdeadbeef);
47 EXPECT_EQ(ParseCrcOrDeadbeef("a"), 0xdeadbeef);
48 EXPECT_EQ(ParseCrcOrDeadbeef("x"), 0xdeadbeef);
49 EXPECT_EQ(ParseCrcOrDeadbeef("ç"), 0xdeadbeef);
50 EXPECT_EQ(ParseCrcOrDeadbeef("😢"), 0xdeadbeef);
51 EXPECT_EQ(ParseCrcOrDeadbeef("0"), 0xdeadbeef);
52 EXPECT_EQ(ParseCrcOrDeadbeef("000000000"), 0xdeadbeef);
53 EXPECT_EQ(ParseCrcOrDeadbeef("00000000x"), 0xdeadbeef);
54}
55