Added tests for SAS parser.
This commit is contained in:
parent
fb04b5fb11
commit
16b8b4c833
@ -13,3 +13,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(apps)
|
||||
if(BUILD_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif(BUILD_TESTS)
|
||||
|
23
tests/CMakeLists.txt
Normal file
23
tests/CMakeLists.txt
Normal file
@ -0,0 +1,23 @@
|
||||
set(target tests)
|
||||
|
||||
file(GLOB core_sources "*.cpp")
|
||||
|
||||
find_package(GTest)
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${GTEST_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${PROJECT_SOURCE_DIR}/include
|
||||
)
|
||||
|
||||
set(libraries
|
||||
${Boost_LIBRARIES}
|
||||
${GTEST_BOTH_LIBRARIES}
|
||||
plasp
|
||||
)
|
||||
|
||||
file(COPY data DESTINATION ${CMAKE_BINARY_DIR})
|
||||
|
||||
add_executable(${target} ${core_sources})
|
||||
target_link_libraries(${target} ${libraries})
|
||||
GTEST_ADD_TESTS(tests "" ${core_sources})
|
104
tests/TestSASParser.cpp
Normal file
104
tests/TestSASParser.cpp
Normal file
@ -0,0 +1,104 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
|
||||
#include <plasp/sas/Description.h>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class SASParserTests : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
SASParserTests()
|
||||
: m_philosophersTestFile(readFile("data/philosophers.sas"))
|
||||
{
|
||||
}
|
||||
|
||||
static std::stringstream readFile(const std::string &path)
|
||||
{
|
||||
std::ifstream fileStream(path, std::ios::in);
|
||||
|
||||
std::stringstream outputStream;
|
||||
|
||||
if (!fileStream.is_open())
|
||||
throw std::runtime_error("Could not open file \"" + path + "\"");
|
||||
|
||||
outputStream << fileStream.rdbuf();
|
||||
|
||||
return outputStream;
|
||||
}
|
||||
|
||||
std::stringstream m_philosophersTestFile;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
TEST_F(SASParserTests, ParseValidSASFile)
|
||||
{
|
||||
try
|
||||
{
|
||||
const auto description = plasp::sas::Description::fromStream(m_philosophersTestFile);
|
||||
|
||||
ASSERT_FALSE(description.usesActionCosts());
|
||||
|
||||
ASSERT_EQ(description.variables().size(), 37);
|
||||
ASSERT_EQ(description.variables()[0].axiomLayer, -1);
|
||||
ASSERT_EQ(description.variables()[36].axiomLayer, -1);
|
||||
|
||||
ASSERT_EQ(description.mutexGroups().size(), 8);
|
||||
ASSERT_EQ(description.mutexGroups()[0].facts.size(), 9);
|
||||
ASSERT_EQ(&description.mutexGroups()[0].facts[0].value, &description.variables()[0].values[0]);
|
||||
ASSERT_EQ(description.mutexGroups()[7].facts.size(), 2);
|
||||
ASSERT_EQ(&description.mutexGroups()[7].facts[1].value, &description.variables()[34].values[1]);
|
||||
|
||||
ASSERT_EQ(description.initialStateFacts().size(), 37);
|
||||
ASSERT_EQ(&description.initialStateFacts()[0].value, &description.variables()[0].values[8]);
|
||||
ASSERT_EQ(&description.initialStateFacts()[36].value, &description.variables()[36].values[1]);
|
||||
|
||||
ASSERT_EQ(description.goalFacts().size(), 2);
|
||||
ASSERT_EQ(&description.goalFacts()[0].value, &description.variables()[6].values[0]);
|
||||
ASSERT_EQ(&description.goalFacts()[1].value, &description.variables()[7].values[0]);
|
||||
|
||||
ASSERT_EQ(description.operators().size(), 34);
|
||||
ASSERT_EQ(description.operators()[0].preconditions.size(), 3);
|
||||
ASSERT_EQ(&description.operators()[0].preconditions[0].value, &description.variables()[4].values[4]);
|
||||
ASSERT_EQ(&description.operators()[0].preconditions[1].value, &description.variables()[16].values[1]);
|
||||
ASSERT_EQ(&description.operators()[0].preconditions[2].value, &description.variables()[0].values[8]);
|
||||
ASSERT_EQ(description.operators()[0].effects.size(), 1);
|
||||
ASSERT_EQ(description.operators()[0].effects[0].conditions.size(), 0);
|
||||
ASSERT_EQ(&description.operators()[0].effects[0].postcondition.value, &description.variables()[0].values[0]);
|
||||
ASSERT_EQ(description.operators()[33].preconditions.size(), 2);
|
||||
ASSERT_EQ(&description.operators()[33].preconditions[0].value, &description.variables()[1].values[3]);
|
||||
ASSERT_EQ(&description.operators()[33].preconditions[1].value, &description.variables()[2].values[2]);
|
||||
ASSERT_EQ(description.operators()[33].effects.size(), 3);
|
||||
ASSERT_EQ(description.operators()[33].effects[0].conditions.size(), 0);
|
||||
ASSERT_EQ(&description.operators()[33].effects[0].postcondition.value, &description.variables()[1].values[7]);
|
||||
ASSERT_EQ(&description.operators()[33].effects[2].postcondition.value, &description.variables()[35].values[0]);
|
||||
|
||||
ASSERT_EQ(description.axiomRules().size(), 33);
|
||||
ASSERT_EQ(description.axiomRules()[0].conditions.size(), 4);
|
||||
ASSERT_EQ(&description.axiomRules()[0].conditions[0].value, &description.variables()[0].values[0]);
|
||||
ASSERT_EQ(&description.axiomRules()[0].conditions[2].value, &description.variables()[27].values[0]);
|
||||
ASSERT_EQ(&description.axiomRules()[0].conditions[3].value, &description.variables()[8].values[1]);
|
||||
ASSERT_EQ(&description.axiomRules()[0].postcondition.value, &description.variables()[8].values[0]);
|
||||
ASSERT_EQ(description.axiomRules()[32].conditions.size(), 2);
|
||||
ASSERT_EQ(&description.axiomRules()[32].conditions[0].value, &description.variables()[15].values[0]);
|
||||
ASSERT_EQ(&description.axiomRules()[32].conditions[1].value, &description.variables()[25].values[0]);
|
||||
ASSERT_EQ(&description.axiomRules()[32].postcondition.value, &description.variables()[25].values[1]);
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
FAIL() << e.what();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
915
tests/data/philosophers.sas
Normal file
915
tests/data/philosophers.sas
Normal file
@ -0,0 +1,915 @@
|
||||
begin_version
|
||||
3
|
||||
end_version
|
||||
begin_metric
|
||||
0
|
||||
end_metric
|
||||
37
|
||||
begin_variable
|
||||
var0
|
||||
-1
|
||||
9
|
||||
Atom activate(philosopher-0, forks--pid-rfork)
|
||||
Atom activate(philosopher-0, forks--pid-wfork)
|
||||
Atom activate(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||
Atom activate(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||
Atom enabled(philosopher-0, forks--pid-rfork)
|
||||
Atom enabled(philosopher-0, forks--pid-wfork)
|
||||
Atom enabled(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||
Atom enabled(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||
Atom pending(philosopher-0)
|
||||
end_variable
|
||||
begin_variable
|
||||
var1
|
||||
-1
|
||||
9
|
||||
Atom activate(philosopher-1, forks--pid-rfork)
|
||||
Atom activate(philosopher-1, forks--pid-wfork)
|
||||
Atom activate(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||
Atom activate(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||
Atom enabled(philosopher-1, forks--pid-rfork)
|
||||
Atom enabled(philosopher-1, forks--pid-wfork)
|
||||
Atom enabled(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||
Atom enabled(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||
Atom pending(philosopher-1)
|
||||
end_variable
|
||||
begin_variable
|
||||
var2
|
||||
-1
|
||||
3
|
||||
Atom advance-head(forks-0-)
|
||||
Atom advance-tail(forks-0-)
|
||||
Atom settled(forks-0-)
|
||||
end_variable
|
||||
begin_variable
|
||||
var3
|
||||
-1
|
||||
3
|
||||
Atom advance-head(forks-1-)
|
||||
Atom advance-tail(forks-1-)
|
||||
Atom settled(forks-1-)
|
||||
end_variable
|
||||
begin_variable
|
||||
var4
|
||||
-1
|
||||
5
|
||||
Atom at-process(philosopher-0, state-1)
|
||||
Atom at-process(philosopher-0, state-3)
|
||||
Atom at-process(philosopher-0, state-4)
|
||||
Atom at-process(philosopher-0, state-5)
|
||||
Atom at-process(philosopher-0, state-6)
|
||||
end_variable
|
||||
begin_variable
|
||||
var5
|
||||
-1
|
||||
5
|
||||
Atom at-process(philosopher-1, state-1)
|
||||
Atom at-process(philosopher-1, state-3)
|
||||
Atom at-process(philosopher-1, state-4)
|
||||
Atom at-process(philosopher-1, state-5)
|
||||
Atom at-process(philosopher-1, state-6)
|
||||
end_variable
|
||||
begin_variable
|
||||
var6
|
||||
0
|
||||
2
|
||||
Atom blocked(philosopher-0)
|
||||
NegatedAtom blocked(philosopher-0)
|
||||
end_variable
|
||||
begin_variable
|
||||
var7
|
||||
0
|
||||
2
|
||||
Atom blocked(philosopher-1)
|
||||
NegatedAtom blocked(philosopher-1)
|
||||
end_variable
|
||||
begin_variable
|
||||
var8
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-0, forks--pid-rfork)
|
||||
NegatedAtom blocked-trans(philosopher-0, forks--pid-rfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var9
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-0, forks--pid-wfork)
|
||||
NegatedAtom blocked-trans(philosopher-0, forks--pid-wfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var10
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||
NegatedAtom blocked-trans(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var11
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||
NegatedAtom blocked-trans(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var12
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-1, forks--pid-rfork)
|
||||
NegatedAtom blocked-trans(philosopher-1, forks--pid-rfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var13
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-1, forks--pid-wfork)
|
||||
NegatedAtom blocked-trans(philosopher-1, forks--pid-wfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var14
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||
NegatedAtom blocked-trans(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var15
|
||||
0
|
||||
2
|
||||
Atom blocked-trans(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||
NegatedAtom blocked-trans(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var16
|
||||
0
|
||||
2
|
||||
Atom new-axiom@0()
|
||||
NegatedAtom new-axiom@0()
|
||||
end_variable
|
||||
begin_variable
|
||||
var17
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-0, philosopher, state-1)
|
||||
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-1)
|
||||
end_variable
|
||||
begin_variable
|
||||
var18
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-0, philosopher, state-3)
|
||||
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-3)
|
||||
end_variable
|
||||
begin_variable
|
||||
var19
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-0, philosopher, state-4)
|
||||
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-4)
|
||||
end_variable
|
||||
begin_variable
|
||||
var20
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-0, philosopher, state-5)
|
||||
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-5)
|
||||
end_variable
|
||||
begin_variable
|
||||
var21
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-0, philosopher, state-6)
|
||||
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-6)
|
||||
end_variable
|
||||
begin_variable
|
||||
var22
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-1, philosopher, state-1)
|
||||
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-1)
|
||||
end_variable
|
||||
begin_variable
|
||||
var23
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-1, philosopher, state-3)
|
||||
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-3)
|
||||
end_variable
|
||||
begin_variable
|
||||
var24
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-1, philosopher, state-4)
|
||||
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-4)
|
||||
end_variable
|
||||
begin_variable
|
||||
var25
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-1, philosopher, state-5)
|
||||
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-5)
|
||||
end_variable
|
||||
begin_variable
|
||||
var26
|
||||
0
|
||||
2
|
||||
Atom new-axiom@1(philosopher-1, philosopher, state-6)
|
||||
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-6)
|
||||
end_variable
|
||||
begin_variable
|
||||
var27
|
||||
-1
|
||||
2
|
||||
Atom queue-head-msg(forks-0-, empty)
|
||||
NegatedAtom queue-head-msg(forks-0-, empty)
|
||||
end_variable
|
||||
begin_variable
|
||||
var28
|
||||
-1
|
||||
2
|
||||
Atom queue-head-msg(forks-0-, fork)
|
||||
NegatedAtom queue-head-msg(forks-0-, fork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var29
|
||||
-1
|
||||
2
|
||||
Atom queue-head-msg(forks-1-, empty)
|
||||
NegatedAtom queue-head-msg(forks-1-, empty)
|
||||
end_variable
|
||||
begin_variable
|
||||
var30
|
||||
-1
|
||||
2
|
||||
Atom queue-head-msg(forks-1-, fork)
|
||||
NegatedAtom queue-head-msg(forks-1-, fork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var31
|
||||
-1
|
||||
2
|
||||
Atom queue-msg(forks-0-, qs-0, fork)
|
||||
NegatedAtom queue-msg(forks-0-, qs-0, fork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var32
|
||||
-1
|
||||
2
|
||||
Atom queue-msg(forks-1-, qs-0, fork)
|
||||
NegatedAtom queue-msg(forks-1-, qs-0, fork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var33
|
||||
-1
|
||||
2
|
||||
Atom queue-size(forks-0-, one)
|
||||
Atom queue-size(forks-0-, zero)
|
||||
end_variable
|
||||
begin_variable
|
||||
var34
|
||||
-1
|
||||
2
|
||||
Atom queue-size(forks-1-, one)
|
||||
Atom queue-size(forks-1-, zero)
|
||||
end_variable
|
||||
begin_variable
|
||||
var35
|
||||
-1
|
||||
2
|
||||
Atom queue-tail-msg(forks-0-, fork)
|
||||
NegatedAtom queue-tail-msg(forks-0-, fork)
|
||||
end_variable
|
||||
begin_variable
|
||||
var36
|
||||
-1
|
||||
2
|
||||
Atom queue-tail-msg(forks-1-, fork)
|
||||
NegatedAtom queue-tail-msg(forks-1-, fork)
|
||||
end_variable
|
||||
8
|
||||
begin_mutex_group
|
||||
9
|
||||
0 0
|
||||
0 1
|
||||
0 2
|
||||
0 3
|
||||
0 4
|
||||
0 5
|
||||
0 6
|
||||
0 7
|
||||
0 8
|
||||
end_mutex_group
|
||||
begin_mutex_group
|
||||
9
|
||||
1 0
|
||||
1 1
|
||||
1 2
|
||||
1 3
|
||||
1 4
|
||||
1 5
|
||||
1 6
|
||||
1 7
|
||||
1 8
|
||||
end_mutex_group
|
||||
begin_mutex_group
|
||||
3
|
||||
2 0
|
||||
2 1
|
||||
2 2
|
||||
end_mutex_group
|
||||
begin_mutex_group
|
||||
3
|
||||
3 0
|
||||
3 1
|
||||
3 2
|
||||
end_mutex_group
|
||||
begin_mutex_group
|
||||
5
|
||||
4 0
|
||||
4 1
|
||||
4 2
|
||||
4 3
|
||||
4 4
|
||||
end_mutex_group
|
||||
begin_mutex_group
|
||||
5
|
||||
5 0
|
||||
5 1
|
||||
5 2
|
||||
5 3
|
||||
5 4
|
||||
end_mutex_group
|
||||
begin_mutex_group
|
||||
2
|
||||
33 0
|
||||
33 1
|
||||
end_mutex_group
|
||||
begin_mutex_group
|
||||
2
|
||||
34 0
|
||||
34 1
|
||||
end_mutex_group
|
||||
begin_state
|
||||
8
|
||||
8
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
end_state
|
||||
begin_goal
|
||||
2
|
||||
6 0
|
||||
7 0
|
||||
end_goal
|
||||
34
|
||||
begin_operator
|
||||
activate-trans philosopher-0 philosopher forks--pid-rfork state-6 state-3
|
||||
2
|
||||
4 4
|
||||
16 1
|
||||
1
|
||||
0 0 8 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-0 philosopher forks--pid-wfork state-1 state-6
|
||||
2
|
||||
4 0
|
||||
16 1
|
||||
1
|
||||
0 0 8 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-0 philosopher forks--pid-wfork state-4 state-5
|
||||
2
|
||||
4 2
|
||||
16 1
|
||||
1
|
||||
0 0 8 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-0 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||
2
|
||||
4 1
|
||||
16 1
|
||||
1
|
||||
0 0 8 2
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-0 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||
2
|
||||
4 3
|
||||
16 1
|
||||
1
|
||||
0 0 8 3
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-1 philosopher forks--pid-rfork state-6 state-3
|
||||
2
|
||||
5 4
|
||||
16 1
|
||||
1
|
||||
0 1 8 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-1 philosopher forks--pid-wfork state-1 state-6
|
||||
2
|
||||
5 0
|
||||
16 1
|
||||
1
|
||||
0 1 8 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-1 philosopher forks--pid-wfork state-4 state-5
|
||||
2
|
||||
5 2
|
||||
16 1
|
||||
1
|
||||
0 1 8 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-1 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||
2
|
||||
5 1
|
||||
16 1
|
||||
1
|
||||
0 1 8 2
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
activate-trans philosopher-1 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||
2
|
||||
5 3
|
||||
16 1
|
||||
1
|
||||
0 1 8 3
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
advance-empty-queue-tail forks-0- queue-1 qs-0 qs-0 fork empty zero one
|
||||
1
|
||||
35 0
|
||||
5
|
||||
0 2 1 2
|
||||
0 27 0 1
|
||||
0 28 -1 0
|
||||
0 31 -1 0
|
||||
0 33 1 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
advance-empty-queue-tail forks-0- queue-1 qs-0 qs-0 fork fork zero one
|
||||
2
|
||||
28 0
|
||||
35 0
|
||||
3
|
||||
0 2 1 2
|
||||
0 31 -1 0
|
||||
0 33 1 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
advance-empty-queue-tail forks-1- queue-1 qs-0 qs-0 fork empty zero one
|
||||
1
|
||||
36 0
|
||||
5
|
||||
0 3 1 2
|
||||
0 29 0 1
|
||||
0 30 -1 0
|
||||
0 32 -1 0
|
||||
0 34 1 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
advance-empty-queue-tail forks-1- queue-1 qs-0 qs-0 fork fork zero one
|
||||
2
|
||||
30 0
|
||||
36 0
|
||||
3
|
||||
0 3 1 2
|
||||
0 32 -1 0
|
||||
0 34 1 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
advance-queue-head forks-0- queue-1 qs-0 qs-0 fork one zero
|
||||
1
|
||||
31 0
|
||||
3
|
||||
0 2 0 2
|
||||
0 28 -1 0
|
||||
0 33 0 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
advance-queue-head forks-1- queue-1 qs-0 qs-0 fork one zero
|
||||
1
|
||||
32 0
|
||||
3
|
||||
0 3 0 2
|
||||
0 30 -1 0
|
||||
0 34 0 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-0 philosopher forks--pid-rfork state-6 state-3
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 0 4 8
|
||||
0 4 4 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-0 philosopher forks--pid-wfork state-1 state-6
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 0 5 8
|
||||
0 4 0 4
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-0 philosopher forks--pid-wfork state-4 state-5
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 0 5 8
|
||||
0 4 2 3
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-0 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 0 6 8
|
||||
0 4 1 2
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-0 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 0 7 8
|
||||
0 4 3 4
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-1 philosopher forks--pid-rfork state-6 state-3
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 1 4 8
|
||||
0 5 4 1
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-1 philosopher forks--pid-wfork state-1 state-6
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 1 5 8
|
||||
0 5 0 4
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-1 philosopher forks--pid-wfork state-4 state-5
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 1 5 8
|
||||
0 5 2 3
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-1 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 1 6 8
|
||||
0 5 1 2
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
perform-trans philosopher-1 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||
1
|
||||
16 1
|
||||
2
|
||||
0 1 7 8
|
||||
0 5 3 4
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-read philosopher-0 forks--pid-rfork forks-0- fork
|
||||
1
|
||||
28 0
|
||||
2
|
||||
0 0 0 4
|
||||
0 2 2 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-read philosopher-0 forks-__-pidp1__2_-rfork forks-1- fork
|
||||
1
|
||||
30 0
|
||||
2
|
||||
0 0 2 6
|
||||
0 3 2 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-read philosopher-1 forks--pid-rfork forks-1- fork
|
||||
1
|
||||
30 0
|
||||
2
|
||||
0 1 0 4
|
||||
0 3 2 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-read philosopher-1 forks-__-pidp1__2_-rfork forks-0- fork
|
||||
1
|
||||
28 0
|
||||
2
|
||||
0 1 2 6
|
||||
0 2 2 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-write philosopher-0 forks--pid-wfork forks-0- fork
|
||||
0
|
||||
3
|
||||
0 0 1 5
|
||||
0 2 2 1
|
||||
0 35 -1 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-write philosopher-0 forks-__-pidp1__2_-wfork forks-1- fork
|
||||
0
|
||||
3
|
||||
0 0 3 7
|
||||
0 3 2 1
|
||||
0 36 -1 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-write philosopher-1 forks--pid-wfork forks-1- fork
|
||||
0
|
||||
3
|
||||
0 1 1 5
|
||||
0 3 2 1
|
||||
0 36 -1 0
|
||||
1
|
||||
end_operator
|
||||
begin_operator
|
||||
queue-write philosopher-1 forks-__-pidp1__2_-wfork forks-0- fork
|
||||
0
|
||||
3
|
||||
0 1 3 7
|
||||
0 2 2 1
|
||||
0 35 -1 0
|
||||
1
|
||||
end_operator
|
||||
33
|
||||
begin_rule
|
||||
3
|
||||
0 0
|
||||
2 2
|
||||
27 0
|
||||
8 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
0 0
|
||||
2 2
|
||||
33 1
|
||||
8 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
0 1
|
||||
2 2
|
||||
33 0
|
||||
9 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
0 2
|
||||
3 2
|
||||
29 0
|
||||
10 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
0 2
|
||||
3 2
|
||||
34 1
|
||||
10 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
0 3
|
||||
3 2
|
||||
34 0
|
||||
11 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
1 0
|
||||
3 2
|
||||
29 0
|
||||
12 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
1 0
|
||||
3 2
|
||||
34 1
|
||||
12 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
1 1
|
||||
3 2
|
||||
34 0
|
||||
13 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
1 2
|
||||
2 2
|
||||
27 0
|
||||
14 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
1 2
|
||||
2 2
|
||||
33 1
|
||||
14 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
3
|
||||
1 3
|
||||
2 2
|
||||
33 0
|
||||
15 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
2 2
|
||||
3 2
|
||||
16 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
4 0
|
||||
17 1
|
||||
6 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
4 1
|
||||
18 1
|
||||
6 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
4 2
|
||||
19 1
|
||||
6 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
4 3
|
||||
20 1
|
||||
6 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
4 4
|
||||
21 1
|
||||
6 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
5 0
|
||||
22 1
|
||||
7 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
5 1
|
||||
23 1
|
||||
7 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
5 2
|
||||
24 1
|
||||
7 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
5 3
|
||||
25 1
|
||||
7 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
2
|
||||
5 4
|
||||
26 1
|
||||
7 1 0
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
8 0
|
||||
21 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
9 0
|
||||
17 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
9 0
|
||||
19 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
10 0
|
||||
18 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
11 0
|
||||
20 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
12 0
|
||||
26 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
13 0
|
||||
22 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
13 0
|
||||
24 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
14 0
|
||||
23 0 1
|
||||
end_rule
|
||||
begin_rule
|
||||
1
|
||||
15 0
|
||||
25 0 1
|
||||
end_rule
|
Reference in New Issue
Block a user