virtualization.cpp
No OneTemporary

File Metadata

Created
Thu, Jul 9, 4:47 AM

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"
#include "supplemental/docutils.h"
using namespace xreate;
using namespace std;
TEST(Virtualization, Doc_AccControl_1) {
string example = getDocumentationExampleFromFile("scripts/virtualization/test-AccControl_1.xreate");
string exampleBody = getDocumentationExampleById("documentation/virtualization.xml", "AccControl_1");
string output = getDocumentationExampleById("documentation/virtualization.xml", "Output_AccControl_1");
replace(example, "<BODY>", exampleBody);
std::unique_ptr<XreateManager> man(XreateManager::prepare(move(example)));
int (* main)() = (int (*)()) man->run();
testing::internal::CaptureStdout();
main();
std::string outputActual = testing::internal::GetCapturedStdout();
cout << outputActual << endl;
ASSERT_STREQ(output.c_str(), outputActual.c_str());
}
TEST(Virtualization, Doc_Isolation_1) {
string example = getDocumentationExampleFromFile("scripts/virtualization/test-Isolation_1.xreate");
string partA = getDocumentationExampleById("documentation/virtualization.xml", "Isolation_1");
string partB = getDocumentationExampleById("documentation/virtualization.xml", "Isolation_2");
string output = getDocumentationExampleById("documentation/virtualization.xml", "Output_Isolation_1");
replace(example, "<PART-A-BODY>", partA);
replace(example, "<PART-B-BODY>", partB);
std::unique_ptr<details::tier1::XreateManager> man(details::tier1::XreateManager::prepare(move(example)));
man->analyse();
ExpandedType typeDictSizoS = man->root->findType("DictSizo");
ExpandedType typeDictSizo = interpretation::dereferenceSlaveType(typeDictSizoS, man->transcend);
ASSERT_EQ(TypeOperator::LIST_RECORD, typeDictSizo->__operator);
int (* main)() = (int (*)()) man->run();
testing::internal::CaptureStdout();
main();
std::string outputActual = testing::internal::GetCapturedStdout();
cout << outputActual << endl;
ASSERT_STREQ(output.c_str(), outputActual.c_str());
}
TEST(Virtualization, Doc_IsolationCat_1) {
string content = getDocumentationExampleFromFile("scripts/virtualization/test-IsolationCat_1.xreate");
string example = getDocumentationExampleById("documentation/virtualization.xml", "IsolationCat_1");
string output = getDocumentationExampleById("documentation/virtualization.xml", "Output_IsolationCat_1");
replace(content, "<EXAMPLE>", example);
std::unique_ptr<XreateManager> man(XreateManager::prepare(move(content)));
int (* main)() = (int (*)()) man->run();
testing::internal::CaptureStdout();
main();
std::string outputActual = testing::internal::GetCapturedStdout();
cout << outputActual << endl;
ASSERT_STREQ(output.c_str(), outputActual.c_str());
}

Event Timeline