/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 *
 * Author: pgess <v.melnychenko@xreate.org>
 * Created on June 7, 2018, 3:35 PM
 *
 * \file    transcend.cpp
 * \brief   Transcend's tests
 */

#include "xreatemanager.h"
#include "transcendlayer.h"
#include <gtest/gtest.h>

using namespace xreate;
using namespace std;

TEST(Transcend, Parse1) {
    std::string script =
R"Code(
)Code";

    std::unique_ptr<details::tier1::XreateManager> man(details::tier1::XreateManager::prepare(std::move(script)));

    std::string scriptTranscend =
R"Code(
    test1((1)).
    test2((1, 2)).
)Code";

    man->transcend->addRawScript(move(scriptTranscend));
    man->analyse();

    StaticModel solution = man->transcend->query("test1");
    Gringo::Symbol symbTest1 = solution.begin()->second;
    auto answer1 = man->transcend->parse<list<int>>(symbTest1);
    ASSERT_EQ(1, get<0>(answer1).size());

    solution = man->transcend->query("test2");
    Gringo::Symbol symbTest2 = solution.begin()->second;
    auto answer2 = get<0>(man->transcend->parse<list<int>>(symbTest2));
    ASSERT_EQ(2, answer2.size());
}