/* 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 "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);
}