exploitation.cpp
No OneTemporary

File Metadata

Created
Thu, Jul 9, 7:08 AM

exploitation.cpp

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*
* exploitation.cpp
*
* Author: pgess <v.melnychenko@xreate.org>
* Created on February 15, 2018, 6:17 PM
*/
#include "xreatemanager.h"
#include "analysis/cfagraph.h"
#include "pass/cfapass.h"
#include "pass/cfatemporalseqpass.h"
#include "supplemental/docutils.h"
#include "supplemental/defines.h"
#include "gtest/gtest.h"
using namespace xreate;
using namespace xreate::cfa;
using namespace std;
TEST(Exploitation, Doc_ResourceInit_1) {
string example = getDocumentationExampleFromFile("scripts/exploitation/test1.xreate");
string body = getDocumentationExampleById("documentation/exploitation.xml", "ResourceInit_1");
replace(example, "<BODY>", body);
details::tier1::XreateManager* man = details::tier1::XreateManager::prepare(move(example));
CFATemporalSeqPass* pass = new CFATemporalSeqPass(man);
man->registerPass(pass, PassId::CFATemporalSeqPass);
man->analyse();
int (* main)() = (int (*)()) man->run();
int result = main();
delete pass;
delete man;
ASSERT_EQ(1, result);
}
TEST(Exploitation, Doc_ExampleEov_1){
string code = getDocumentationExampleFromFile("scripts/execution-order/test-1.xreate");
string codeSpecializations = getDocumentationExampleById("documentation/index.xml", "ExampleEov_1_Specializations");
string script = getDocumentationExampleFromFile("/private/prg/code/xreate/scripts/execution-order/test-1.assembly.lp");
string scriptExpectation = getDocumentationExampleById("documentation/index.xml", "ExampleEov_1_Expectation");
string scriptRegistration = getDocumentationExampleById("documentation/index.xml", "ExampleEov_1_Registration");
replace(script, "<insert ExampleEov_1_Expectation>", scriptExpectation);
replace(script, "<insert ExampleEov_1_Registration>", scriptRegistration);
replace(code, "<insert ExampleEov_1_Specializations>", codeSpecializations);
auto man = details::tier1::XreateManager::prepare(move(code));
man->transcend->addRawScript(move(script));
man->analyse();
FnNoArgs program = (FnNoArgs)man->run();
delete man;
testing::internal::CaptureStdout();
program();
std::string outputActual = testing::internal::GetCapturedStdout();
ASSERT_NE(std::string::npos, outputActual.find("HeaderBodyFooter"));
}

Event Timeline