-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_model.cpp
104 lines (80 loc) · 2.56 KB
/
test_model.cpp
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
/*
* Copyright (C) Ivan Ryabov - All Rights Reserved
*
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
*
* Written by Ivan Ryabov <abbyssoul@gmail.com>
*/
/*******************************************************************************
* Unit Test Suit
* @file test/test_model.cpp
* @brief Test suit for mjstyxfs::Model
******************************************************************************/
#include "model.hpp" // Class being tested.
#include <solace/output_utils.hpp>
#include <rapidjson/error/error.h>
#include <rapidjson/error/en.h>
#include <gtest/gtest.h>
using namespace Solace;
using namespace mjstyxfs;
struct TestJsonFS : public ::testing::Test {
void SetUp() override {
auto maybeFsId = _vfs.registerFilesystem<JsonFS>();
ASSERT_TRUE(maybeFsId.isOk());
_jsonFsId = *maybeFsId;
}
void TearDown() override {
_vfs.unregisterFileSystem(_jsonFsId);
}
protected:
kasofs::User _owner{0, 0};
kasofs::Vfs _vfs{_owner, kasofs::FilePermissions{0666}};
kasofs::VfsId _jsonFsId{0};
rapidjson::Document _doc;
};
TEST_F(TestJsonFS, modelPopulation) {
rapidjson::ParseResult ok = _doc.Parse("{\"test\": \"value-x\", \"other\": 32}");
if (!ok) {
FAIL() << rapidjson::GetParseError_En(ok.Code());
}
ASSERT_FALSE(_doc.HasParseError());
auto mappedOk = mapJsonToFs(_vfs, _vfs.rootId(), _jsonFsId, "doc", _doc);
if (!mappedOk) {
FAIL() << mappedOk.getError();
}
ASSERT_TRUE(mappedOk.isOk());
auto enumerator = _vfs.enumerateDirectory(_owner, _vfs.rootId());
ASSERT_TRUE(enumerator.isOk());
uint32 count = 0;
for (auto e : *enumerator) {
EXPECT_EQ("doc", e.name);
count += 1;
}
EXPECT_EQ(1, count);
char buf[32];
{
auto maybeX = _vfs.walk(_owner, *makePath("doc", "test"));
ASSERT_TRUE(maybeX.isOk());
auto entry = *maybeX;
EXPECT_EQ("test", entry.name);
auto maybeFile_test = _vfs.open(_owner, entry.nodeId, kasofs::Permissions::READ);
ASSERT_TRUE(maybeFile_test.isOk());
memset(buf, 0, sizeof(buf));
auto readResult = (*maybeFile_test).read(wrapMemory(buf));
ASSERT_TRUE(readResult.isOk());
EXPECT_STREQ("value-x", buf);
}
{
auto maybeY = _vfs.walk(_owner, *makePath("doc", "other"));
ASSERT_TRUE(maybeY.isOk());
auto entryY = *maybeY;
EXPECT_EQ("other", entryY.name);
auto maybeFile_other = _vfs.open(_owner, entryY.nodeId, kasofs::Permissions::READ);
ASSERT_TRUE(maybeFile_other.isOk());
memset(buf, 0, sizeof(buf));
auto readResult2 = (*maybeFile_other).read(wrapMemory(buf));
ASSERT_TRUE(readResult2.isOk());
EXPECT_STREQ("32", buf);
}
}