diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6d06143ad6cfb5f68206b4108b8abc7f45f329c1..7d4220d1e13d12997c540bc54ced8b6e99b5f7fe 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ image: alpine:3.15 build:worker: stage: build - image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/automata-library/cli:snapshot + image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/webui-client/core-snapshot:0.0.0.r1468.g6fa14a8d8 before_script: - apk add --no-cache curl && curl https://alt.fit.cvut.cz/repo/alpine/alt-dev-repo.sh | sh - apk add --no-cache build-base cmake jsoncpp-dev pkgconf apr-dev spdlog-dev catch2 activemq-cpp-dev argparse diff --git a/webui/src/components/WebUI/Toolbar/AlgorithmDrawer.tsx b/webui/src/components/WebUI/Toolbar/AlgorithmDrawer.tsx index f3add59e4ede28e80df3739abddd39530219779a..7c1e85a682d7279bfa4e9f67579a2ce7a5e79026 100644 --- a/webui/src/components/WebUI/Toolbar/AlgorithmDrawer.tsx +++ b/webui/src/components/WebUI/Toolbar/AlgorithmDrawer.tsx @@ -76,7 +76,7 @@ export const AlgorithmDrawer = () => { handleButtonClick( 'inputString', 'string', - 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >', + 'std:string', [], '' ), diff --git a/webui/src/reducers/algorithmData.ts b/webui/src/reducers/algorithmData.ts index c90b19db3feb2f9833847b82c30091e9fe93a70e..46049e270e93620a5773867eb50b74ef6cf4619d 100644 --- a/webui/src/reducers/algorithmData.ts +++ b/webui/src/reducers/algorithmData.ts @@ -206,8 +206,7 @@ export const algorithmReducer = ( nodes: state.nodes.update(id, emptyNode, (node) => ({ ...node, name: 'string', - resultType: - 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >', + resultType: 'std::string', nodeType: 'inputString', value })), diff --git a/worker/Dockerfile b/worker/Dockerfile index c01a20d895b2ad748ab8576dc6bd0e881e073426..a990975fd534eb3b4f0779d4d46c65df6c05083a 100644 --- a/worker/Dockerfile +++ b/worker/Dockerfile @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/automata-library/cli:snapshot +ARG BASE_IMAGE=gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/webui-client/core-snapshot:0.0.0.r1468.g6fa14a8d8 #----------------------------------------------------------------------------------------- diff --git a/worker/src/utils/alt.cpp b/worker/src/utils/alt.cpp index 0bcfb46630d8f166bb846e918f54f6bb02ed360e..5da5a8e54617c0019c9271bd9bd789bea7cd27c8 100644 --- a/worker/src/utils/alt.cpp +++ b/worker/src/utils/alt.cpp @@ -5,7 +5,7 @@ std::string abstractValueToString(const std::shared_ptr<abstraction::Value>& val) { - std::shared_ptr<abstraction::OperationAbstraction> op = abstraction::Registry::getValuePrinterAbstraction(val->getType()); + std::shared_ptr<abstraction::OperationAbstraction> op = abstraction::Registry::getValuePrinterAbstraction(val->getDeclaredType()); ext::ostringstream oss; op->attachInput(val, 0); diff --git a/worker/src/worker/introspection/introspect.cpp b/worker/src/worker/introspection/introspect.cpp index 2080a3d650fb81cb883ec4cac46061d9d1c6f530..34fbbf2141384409a2f70afcb40d922422593a46 100644 --- a/worker/src/worker/introspection/introspect.cpp +++ b/worker/src/worker/introspection/introspect.cpp @@ -20,10 +20,9 @@ Json::Value getAlgorithmOverloadJSON(const ext::tuple<abstraction::AlgorithmFull while (paramsIterator != params.cend() || paramsNamesIterator != paramsNames.cend()) { Json::Value paramJSON(Json::objectValue); - ; paramJSON["name"] = *paramsNamesIterator; - paramJSON["type"] = std::get<0>(*paramsIterator); + paramJSON["type"] = ext::to_string(std::get<0>(*paramsIterator)); paramsJSON.append(paramJSON); @@ -31,7 +30,7 @@ Json::Value getAlgorithmOverloadJSON(const ext::tuple<abstraction::AlgorithmFull ++paramsNamesIterator; } - overloadJSON["resultType"] = info.getResult().first; + overloadJSON["resultType"] = ext::to_string(info.getResult().first); overloadJSON["params"] = paramsJSON; if (auto docs = std::get<1>(overload)) { overloadJSON["docs"] = *docs; @@ -85,13 +84,12 @@ Json::Value getCastsJSON() { Json::Value castsJSON(Json::objectValue); - for (const ext::tuple<std::string, std::string, bool>& castPair : abstraction::Registry::listCasts()) { - const auto& isExplicit = std::get<2>(castPair); + for (const auto& [toType, fromType, isExplicit] : abstraction::Registry::listCasts()) { if (isExplicit) continue; - const auto& from = std::get<1>(castPair); - const auto& to = std::get<0>(castPair); + auto from = ext::to_string(fromType); + auto to = ext::to_string(toType); if (castsJSON[from].isNull()) castsJSON[from] = Json::Value(Json::arrayValue); diff --git a/worker/test-src/evaluator/AlgorithmNodeTest.cpp b/worker/test-src/evaluator/AlgorithmNodeTest.cpp index 23071e579b082ab7c0095c87befc984e32c4f0c3..b35f8c6c1a467c4ecb69b516b08b0eb437f87999 100644 --- a/worker/test-src/evaluator/AlgorithmNodeTest.cpp +++ b/worker/test-src/evaluator/AlgorithmNodeTest.cpp @@ -57,21 +57,32 @@ TEST_CASE("AlgorithmNode evaluate") TEST_CASE("AlgorithmNode multiple params evaluate") { - auto inputInt = std::make_shared<IntNode>("", 4, ext::vector<std::string>()); - auto inputBool = std::make_shared<BoolNode>("", false, ext::vector<std::string>()); - auto node = std::make_shared<AlgorithmNode>("", "string::generate::RandomStringFactory", ext::vector<std::string>()); + auto alphabetSize = std::make_shared<IntNode>("", 4, ext::vector<std::string>()); + auto randomizeAlphabet = std::make_shared<BoolNode>("", true, ext::vector<std::string>()); + auto lowerCase = std::make_shared<BoolNode>("", false, ext::vector<std::string>()); + auto randomAlphabet = std::make_shared<AlgorithmNode>("", "alphabet::generate::GenerateAlphabet", ext::vector<std::string>()); + + alphabetSize->createEdge(randomAlphabet, 0); + randomizeAlphabet->createEdge(randomAlphabet, 1); + lowerCase->createEdge(randomAlphabet, 2); + + auto stringSize = std::make_shared<IntNode>("", 10, ext::vector<std::string>()); + auto randomString = std::make_shared<AlgorithmNode>("", "string::generate::RandomStringFactory", ext::vector<std::string>()); auto mockOutputNode = std::make_shared<AlgorithmTestNodeMock>(); - inputInt->createEdge(node, 0); - inputInt->createEdge(node, 1); - inputBool->createEdge(node, 2); - inputBool->createEdge(node, 3); + stringSize->createEdge(randomString, 0); + randomAlphabet->createEdge(randomString, 1); + randomString->createEdge(mockOutputNode, 0); cli::Environment environment; - inputInt->evaluate(environment); - inputBool->evaluate(environment); - node->evaluate(environment); + alphabetSize->evaluate(environment); + randomizeAlphabet->evaluate(environment); + lowerCase->evaluate(environment); + randomAlphabet->evaluate(environment); + stringSize->evaluate(environment); + randomString->evaluate(environment); mockOutputNode->evaluate(environment); REQUIRE(mockOutputNode->getParams().size() == 1); + REQUIRE(abstractValueToString(mockOutputNode->getParams().at(0)).starts_with("(LinearString content")); }