Skip to content

Commit

Permalink
Always have main subtask even though it contains empty constraints
Browse files Browse the repository at this point in the history
  • Loading branch information
fushar committed May 7, 2017
1 parent 1284d76 commit dbb574e
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 8 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ set(TEST_UNIT
test/unit/tcframe/runner/RunnerTests.cpp
test/unit/tcframe/runner/RunnerLoggerTests.cpp
test/unit/tcframe/runner/SlugParserTests.cpp
test/unit/tcframe/spec/constraint/ConstraintSuiteTests.cpp
test/unit/tcframe/spec/constraint/ConstraintSuiteBuilderTests.cpp
test/unit/tcframe/spec/core/BaseTestSpecTests.cpp
test/unit/tcframe/spec/core/BaseProblemSpecTests.cpp
Expand Down
3 changes: 1 addition & 2 deletions include/tcframe/runner/Runner.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,7 @@ class Runner {
}

Aggregator* getAggregator(const Spec& spec) {
bool hasSubtasks = (spec.constraintSuite().constraints().size() > 1);
return aggregatorFactory_->create(hasSubtasks);
return aggregatorFactory_->create(spec.constraintSuite().hasSubtasks());
}

void cleanUp() {
Expand Down
10 changes: 6 additions & 4 deletions include/tcframe/spec/constraint/ConstraintSuite.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ struct ConstraintSuite {
return tie(constraints_, multipleTestCasesConstraints_) == tie(o.constraints_, multipleTestCasesConstraints_);
}

bool hasSubtasks() const {
return constraints_.size() > 1;
}

set<int> getDefinedSubtaskIds() const {
set<int> definedSubtaskIds;
for (const Subtask& subtask : constraints_) {
Expand Down Expand Up @@ -70,9 +74,7 @@ class ConstraintSuiteBuilder {
, isInMultipleTestCasesConstraints_(false) {}

ConstraintSuiteBuilder& newSubtask() {
if (hasCurrentSubtask_ || !curConstraints.empty()) {
addCurrentSubtask();
}
addCurrentSubtask();

if (!hasCurrentSubtask_) {
curSubtaskId_ = 0;
Expand Down Expand Up @@ -100,7 +102,7 @@ class ConstraintSuiteBuilder {
}

ConstraintSuite build() {
if (!curConstraints.empty()) {
if (subject_.constraints_.empty() || !curConstraints.empty()) {
addCurrentSubtask();
}
return move(subject_);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class ConstraintSuiteBuilderTests : public Test {
TEST_F(ConstraintSuiteBuilderTests, Building_Nothing) {
ConstraintSuite constraintSuite = builder
.build();
ConstraintSuite expected({}, {});
ConstraintSuite expected({Subtask(Subtask::MAIN_ID, {})}, {});

EXPECT_THAT(constraintSuite, Eq(expected));
}
Expand All @@ -39,7 +39,7 @@ TEST_F(ConstraintSuiteBuilderTests, Building_OnlyMultipleTestCasesConstraints) {
.prepareForMultipleTestCasesConstraints()
.addConstraint([]{return true;}, "1 <= T && T <= 10")
.build();
ConstraintSuite expected({}, {
ConstraintSuite expected({Subtask(Subtask::MAIN_ID, {})}, {
Constraint([]{return true;}, "1 <= T && T <= 10")});

EXPECT_THAT(constraintSuite, Eq(expected));
Expand Down Expand Up @@ -79,6 +79,7 @@ TEST_F(ConstraintSuiteBuilderTests, Building_WithSubtasks) {
.newSubtask() // should be ignored
.build();
ConstraintSuite expected({
Subtask(Subtask::MAIN_ID, {}),
Subtask(1, {
Constraint([]{return true;}, "1 <= A && A <= 10"),
Constraint([]{return true;}, "1 <= B && B <= 10")}),
Expand Down
27 changes: 27 additions & 0 deletions test/unit/tcframe/spec/constraint/ConstraintSuiteTests.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include "gmock/gmock.h"

#include "tcframe/spec/constraint/ConstraintSuite.hpp"

using ::testing::ElementsAre;
using ::testing::Test;

namespace tcframe {

class ConstraintSuiteTests : public Test {};

TEST_F(ConstraintSuiteTests, HasSubtasks_WithoutSubtasks) {
ConstraintSuite constraintSuite({Subtask(Subtask::MAIN_ID, {})}, {});
EXPECT_FALSE(constraintSuite.hasSubtasks());
}

TEST_F(ConstraintSuiteTests, HasSubtasks_WithSubtasks) {
ConstraintSuite constraintSuite({Subtask(Subtask::MAIN_ID, {}), Subtask(1, {})}, {});
EXPECT_TRUE(constraintSuite.hasSubtasks());
}

TEST_F(ConstraintSuiteTests, GetDefinedSubtaskIds) {
ConstraintSuite constraintSuite({Subtask(Subtask::MAIN_ID, {}), Subtask(1, {}), Subtask(2, {})}, {});
EXPECT_THAT(constraintSuite.getDefinedSubtaskIds(), ElementsAre(1, 2));
}

}

0 comments on commit dbb574e

Please sign in to comment.