Made file store IO test test 16, 32, and 64 bit file systems.

This commit is contained in:
2016-06-24 17:50:10 -05:00
parent c47bb01175
commit f9f19819ef
3 changed files with 24 additions and 11 deletions
+4 -3
View File
@@ -13,18 +13,19 @@
namespace wombat {
namespace fs {
template<typename FsSize_t>
template<typename FsT>
class FileStore {
public:
typedef uint16_t InodeId_t;
typedef FsT FsSize_t;
struct FsHeader {
uint32_t version;
FsSize_t size;
FsSize_t rootInode;
};
typedef uint16_t InodeId_t;
struct StatInfo {
InodeId_t inodeId;
FsSize_t size;
+9 -1
View File
@@ -30,12 +30,20 @@ class FileSystem {
int read(const char *path, void *buffer);
FileStat stat(const char *path);
FileStat stat(typename FileStore::InodeId_t inode);
};
template<typename FileStore>
FileStat FileSystem<FileStore>::stat(const char *path) {
FileStat stat;
auto s = store->stat(path);
return stat;
}
template<typename FileStore>
FileStat FileSystem<FileStore>::stat(typename FileStore::InodeId_t inode) {
FileStat stat;
auto s = store->stat(inode);
stat.size = s.size;
stat.inode = s.inodeId;
return stat;
+11 -7
View File
@@ -10,14 +10,15 @@
using namespace wombat::fs;
int main() {
const auto size = 1 << 16;
template<typename FileStore>
int test() {
const auto size = 65535;
uint8_t volume[size];
char out[6];
uint32_t err;
FileStore32::format(volume, size);
FileStore32 fs(volume, volume + size, &err);
uint32_t outSize;
typename FileStore::FsSize_t outSize;
FileStore::format(volume, size);
FileStore fs(volume, volume + size, &err);
if (fs.write(1, (void*) "Hello", 6) ||
fs.read(1, (char*) out, &outSize) ||
@@ -26,7 +27,7 @@ int main() {
}
if (fs.write(2, (void*) "World", 6) ||
fs.read(2, (char*) out, nullptr) ||
fs.read(2, (char*) out, &outSize) ||
strcmp("World", out)) {
return 1;
}
@@ -37,6 +38,9 @@ int main() {
return 1;
}
return 0;
}
int main() {
return test<FileStore16>() | test<FileStore32>() | test<FileStore64>();
}