add test option for clang3.4

This commit is contained in:
bolero-MURAKAMI 2014-01-08 01:58:08 +09:00
parent 4bcc5e71fc
commit 07524ee071
3 changed files with 277 additions and 0 deletions

View file

@ -19,6 +19,7 @@
namespace testspr { namespace testspr {
static void algorithm_bogo_sort_test() { static void algorithm_bogo_sort_test() {
using namespace sprout; using namespace sprout;
#if !defined(__clang__) || !(__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4))
{ {
SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 5>{{5, 1, 4, 2, 3}}; SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 5>{{5, 1, 4, 2, 3}};
@ -133,6 +134,122 @@ namespace testspr {
)); ));
} }
} }
#else
{
SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 4>{{1, 4, 2, 3}};
// ソート
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort(
arr1,
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED)
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 4>{{1, 2, 3, 4}}
));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort(
arr1,
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED)
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 4>{{1, 2, 3, 4}}
));
}
// ソート
// 範囲の切り出し
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort(
sprout::sub(arr1, 1, 3),
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED)
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sorted),
array<int, 4>{{1, 2, 4, 3}}
));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort(
sprout::sub(arr1, 1, 3),
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED)
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sorted),
array<int, 4>{{1, 2, 4, 3}}
));
}
}
{
SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 4>{{1, 4, 2, 3}};
// ソート
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort(
arr1,
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED),
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 4>{{1, 2, 3, 4}}
));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort(
arr1,
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED),
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 4>{{1, 2, 3, 4}}
));
}
// ソート
// 範囲の切り出し
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort(
sprout::sub(arr1, 1, 3),
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED),
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sorted),
array<int, 4>{{1, 2, 4, 3}}
));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort(
sprout::sub(arr1, 1, 3),
sprout::random::default_random_engine(SPROUT_UNIQUE_SEED),
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sorted,
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sorted),
array<int, 4>{{1, 2, 4, 3}}
));
}
}
#endif
} }
} // namespace testspr } // namespace testspr

View file

@ -19,6 +19,7 @@
namespace testspr { namespace testspr {
static void algorithm_bogo_sort_result_test() { static void algorithm_bogo_sort_result_test() {
using namespace sprout; using namespace sprout;
#if !defined(__clang__) || !(__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4))
{ {
SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 5>{{5, 1, 4, 2, 3}}; SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 5>{{5, 1, 4, 2, 3}};
SPROUT_STATIC_CONSTEXPR auto g = sprout::random::default_random_engine(SPROUT_UNIQUE_SEED); SPROUT_STATIC_CONSTEXPR auto g = sprout::random::default_random_engine(SPROUT_UNIQUE_SEED);
@ -175,6 +176,164 @@ namespace testspr {
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2)); TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
} }
} }
#else
{
SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 4>{{1, 4, 2, 3}};
SPROUT_STATIC_CONSTEXPR auto g = sprout::random::default_random_engine(SPROUT_UNIQUE_SEED);
// ソート
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort_result(
arr1,
g
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 4>{{1, 2, 3, 4}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort_result(
arr1,
g
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 4>{{1, 2, 3, 4}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
// ソート
// 範囲の切り出し
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort_result(
sprout::sub(arr1, 1, 3),
g
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sprout::get<0>(sorted)),
array<int, 4>{{1, 2, 4, 3}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort_result(
sprout::sub(arr1, 1, 3),
g
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sprout::get<0>(sorted)),
array<int, 4>{{1, 2, 4, 3}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
}
{
SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 4>{{1, 4, 2, 3}};
SPROUT_STATIC_CONSTEXPR auto g = sprout::random::default_random_engine(SPROUT_UNIQUE_SEED);
// ソート
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort_result(
arr1,
g,
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 4>{{1, 2, 3, 4}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort_result(
arr1,
g,
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 4>{{1, 2, 3, 4}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
// ソート
// 範囲の切り出し
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::bogo_sort_result(
sprout::sub(arr1, 1, 3),
g,
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sprout::get<0>(sorted)),
array<int, 4>{{1, 2, 4, 3}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
{
SPROUT_STATIC_CONSTEXPR auto sorted = sprout::fit::bogo_sort_result(
sprout::sub(arr1, 1, 3),
g,
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get<0>(sorted),
array<int, 2>{{2, 4}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(sprout::get<0>(sorted)),
array<int, 4>{{1, 2, 4, 3}}
));
SPROUT_STATIC_CONSTEXPR auto sorted2 = sprout::bogo_sort_result(
sprout::get<0>(sorted),
sprout::get<1>(sorted)
);
TESTSPR_BOTH_ASSERT(sprout::get<1>(sorted) == sprout::get<1>(sorted2));
}
}
#endif
} }
} // namespace testspr } // namespace testspr

View file

@ -24,6 +24,7 @@ declare -a common_options=()
declare -a version_options=() declare -a version_options=()
declare -A version_specific_options=( declare -A version_specific_options=(
[clang-3.3]='-ftemplate-depth=512' [clang-3.3]='-ftemplate-depth=512'
[clang-3.4]='-ftemplate-depth=512'
) )
test_cpp=$(cd $(dirname $0); pwd)/test.cpp test_cpp=$(cd $(dirname $0); pwd)/test.cpp
test_py=$(cd $(dirname $0); pwd)/test.py test_py=$(cd $(dirname $0); pwd)/test.py