virtualization.cpp
No OneTemporary

File Metadata

Created
Sun, Feb 15, 6:24 PM

virtualization.cpp

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*
* virtualization.cpp
*
* Author: pgess <v.melnychenko@xreate.org>
* Created on February 24, 2018, 4:30 PM
*/
#include "xreatemanager.h"
#include "ast.h"
#include "analysis/interpretation.h"
#include "gtest/gtest.h"
using namespace xreate;
using namespace std;
TEST(Virtualization, UniqueSizoPrefix_1) {
FILE* input = fopen("scripts/virtualization/test1.xreate", "r");
assert(input != nullptr);
std::unique_ptr<details::tier1::XreateManager> man(details::tier1::XreateManager::prepare(input));
man->analyse();
ExpandedType typeDictSizoS = man->root->findType("DictSizo");
ExpandedType typeDictSizo = interpretation::dereferenceSlaveType(typeDictSizoS, man->transcend);
ASSERT_EQ(TypeOperator::LIST_NAMED, typeDictSizo->__operator);
int (*main)() = (int (*)())man->run();
testing::internal::CaptureStdout();
main();
std::string outputActual = testing::internal::GetCapturedStdout();
cout << outputActual << endl;
ASSERT_STREQ("file opened: /0/test1 file opened: /1/test1 ", outputActual.c_str());
}
TEST(Virtualization, GlobalDereferenceStrategy_1) {
FILE* input = fopen("scripts/virtualization/test2.xreate", "r");
assert(input != nullptr);
std::unique_ptr<XreateManager> man(XreateManager::prepare(input));
int (*main)() = (int (*)())man->run();
testing::internal::CaptureStdout();
main();
std::string outputActual = testing::internal::GetCapturedStdout();
cout << outputActual << endl;
ASSERT_STREQ("file opened: test1 file opened: test1 ", outputActual.c_str());
}
TEST(Virtualization, LocalDereferenceStrategy_1) {
FILE* input = fopen("scripts/virtualization/test3.xreate", "r");
assert(input != nullptr);
std::unique_ptr<XreateManager> man(XreateManager::prepare(input));
int (*main)() = (int (*)())man->run();
testing::internal::CaptureStdout();
main();
std::string outputActual = testing::internal::GetCapturedStdout();
cout << outputActual << endl;
ASSERT_STREQ("file opened: test1 file opened: 1/test1 ", outputActual.c_str());
}

Event Timeline