test/helloworld/project.test.cpp
Depends on
Code
#define PROBLEM "http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_A"
#include <bits/stdc++.h>
#include "../../Util/project.hpp"
using namespace std;
void test1() {
vector<pair<int, char>> a {
{0, 'a'},
{1, 'b'},
{2, 'c'},
};
const vector<int> expected0 = {0, 1, 2};
const vector<char> expected1 = {'a', 'b', 'c'};
assert(project<0>(a) == expected0);
assert(project<1>(a) == expected1);
clog << __func__ << " : OK" << endl;
}
void test2() {
vector<tuple<int, char, bool>> a {
{0, 'a', true},
{1, 'b', false},
{2, 'c', true},
};
const vector<int> expected0 = {0, 1, 2};
const vector<char> expected1 = {'a', 'b', 'c'};
const vector<bool> expected2 = {true, false, true};
assert(project<0>(a) == expected0);
assert(project<1>(a) == expected1);
assert(project<2>(a) == expected2);
clog << __func__ << " : OK" << endl;
}
int main() {
std::cout << "Hello World" << std::endl;
test1();
test2();
return 0;
}
#line 1 "test/helloworld/project.test.cpp"
#define PROBLEM "http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_A"
#include <bits/stdc++.h>
#line 6 "Util/project.hpp"
/**
* @brief project() (タプルのコンテナの第 I 要素を抽出したvectorを返す)
*/
template <size_t I, class Container, class Value = typename std::tuple_element_t<I, typename Container::value_type>>
std::vector<Value> project(const Container& v) {
std::vector<Value> ret(v.size());
std::transform(v.begin(), v.end(), ret.begin(), [](auto&& t) { return std::get<I>(t); });
return ret;
}
#line 5 "test/helloworld/project.test.cpp"
using namespace std;
void test1() {
vector<pair<int, char>> a {
{0, 'a'},
{1, 'b'},
{2, 'c'},
};
const vector<int> expected0 = {0, 1, 2};
const vector<char> expected1 = {'a', 'b', 'c'};
assert(project<0>(a) == expected0);
assert(project<1>(a) == expected1);
clog << __func__ << " : OK" << endl;
}
void test2() {
vector<tuple<int, char, bool>> a {
{0, 'a', true},
{1, 'b', false},
{2, 'c', true},
};
const vector<int> expected0 = {0, 1, 2};
const vector<char> expected1 = {'a', 'b', 'c'};
const vector<bool> expected2 = {true, false, true};
assert(project<0>(a) == expected0);
assert(project<1>(a) == expected1);
assert(project<2>(a) == expected2);
clog << __func__ << " : OK" << endl;
}
int main() {
std::cout << "Hello World" << std::endl;
test1();
test2();
return 0;
}
Back to top page