Skip to content
Snippets Groups Projects
Commit cc33044a authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add missing tests AffectationProcessor

This commit adds tests for tuples of basic types affectations
parent 2d43fff7
No related branches found
No related tags found
1 merge request!144Add R^dxd and R^d expressions in pugs' language (with d=1,2 or 3)
......@@ -73,6 +73,8 @@
TEST_CASE("AffectationProcessor", "[language]")
{
SECTION("Affectations")
{
SECTION("basic types")
{
SECTION("B")
{
......@@ -162,6 +164,477 @@ TEST_CASE("AffectationProcessor", "[language]")
}
}
SECTION("lists")
{
SECTION("with (B)")
{
SECTION("from value")
{
std::string_view data = R"(
let (b1,b2): (B)*(B), (b1,b2) = (false, true);
)";
CHECK_AFFECTATION_RESULT(data, "b1", (std::vector<bool>{false}));
CHECK_AFFECTATION_RESULT(data, "b2", (std::vector<bool>{true}));
}
SECTION("from list")
{
std::string_view data = R"(
let (b1,b2): (B)*B, (b1,b2) = ((true,false), true);
)";
CHECK_AFFECTATION_RESULT(data, "b1", (std::vector<bool>{true, false}));
CHECK_AFFECTATION_RESULT(data, "b2", true);
}
SECTION("from (B)")
{
std::string_view data = R"(
let b : (B), b = (true, false);
let (b1,b2) : (B)*B, (b1,b2) = (b, false);
)";
CHECK_AFFECTATION_RESULT(data, "b1", (std::vector<bool>{true, false}));
CHECK_AFFECTATION_RESULT(data, "b2", false);
}
}
SECTION("(N)")
{
SECTION("from value")
{
std::string_view data = R"(
let n:N, n = 9;
let (n1,n2,n3): (N)*(N)*(N), (n1,n2,n3) = (false, 1, n);
)";
CHECK_AFFECTATION_RESULT(data, "n1", (std::vector<uint64_t>{false}));
CHECK_AFFECTATION_RESULT(data, "n2", (std::vector<uint64_t>{1}));
CHECK_AFFECTATION_RESULT(data, "n3", (std::vector<uint64_t>{9}));
}
SECTION("from list")
{
std::string_view data = R"(
let (n,m) :(N)*N, (n,m) = ((1,2,3), 7);
)";
CHECK_AFFECTATION_RESULT(data, "n", (std::vector<uint64_t>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "m", 7ul);
}
SECTION("from (B)")
{
std::string_view data = R"(
let b :(B), b = (true,false,true);
let (n,m) :(N)*(N), (n,m) = (b, (false,true));
)";
CHECK_AFFECTATION_RESULT(data, "n", (std::vector<uint64_t>{1, 0, 1}));
CHECK_AFFECTATION_RESULT(data, "m", (std::vector<uint64_t>{0, 1}));
}
SECTION("from (N)")
{
std::string_view data = R"(
let l:(N), l = (1,2,3);
let (n,m):(N)*(N), (n,m) = (l,(2,3,1));
)";
CHECK_AFFECTATION_RESULT(data, "n", (std::vector<uint64_t>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "m", (std::vector<uint64_t>{2, 3, 1}));
}
SECTION("from (Z)")
{
std::string_view data = R"(
let z:(Z), z = (1,2,3);
let (n,x):(N)*R, (n,x) = (z,2.3);
)";
CHECK_AFFECTATION_RESULT(data, "n", (std::vector<uint64_t>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "x", double{2.3});
}
}
SECTION("(Z)")
{
SECTION("from value")
{
std::string_view data = R"(
let n:N, n = 9;
let (z1,z2,z3): (Z)*(Z)*(Z), (z1,z2,z3) = (false, -1, n);
)";
CHECK_AFFECTATION_RESULT(data, "z1", (std::vector<int64_t>{false}));
CHECK_AFFECTATION_RESULT(data, "z2", (std::vector<int64_t>{-1}));
CHECK_AFFECTATION_RESULT(data, "z3", (std::vector<int64_t>{9}));
}
SECTION("from list")
{
std::string_view data = R"(
let (z1,z2):(Z)*(Z), (z1,z2) = ((1,2,3),(2,1,3));
)";
CHECK_AFFECTATION_RESULT(data, "z1", (std::vector<int64_t>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "z2", (std::vector<int64_t>{2, 1, 3}));
}
SECTION("from (N)")
{
std::string_view data = R"(
let m : (N), m = (1,2,3);
let (z,n) : (Z)*N, (z,n) = (m,2);
)";
CHECK_AFFECTATION_RESULT(data, "z", (std::vector<int64_t>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "n", 2ul);
}
SECTION("from (Z)")
{
std::string_view data = R"(
let z0:(Z), z0 = (1,2,3);
let (z,a): (Z)*Z, (z,a) = (z0,3);
)";
CHECK_AFFECTATION_RESULT(data, "z", (std::vector<int64_t>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
SECTION("(R)")
{
SECTION("from value")
{
std::string_view data = R"(
let n:N, n = 9;
let (r1,r2,r3,r4): (R)*(R)*(R)*(R), (r1,r2,r3,r4) = (false, -1, n, 2.3);
)";
CHECK_AFFECTATION_RESULT(data, "r1", (std::vector<double>{false}));
CHECK_AFFECTATION_RESULT(data, "r2", (std::vector<double>{-1}));
CHECK_AFFECTATION_RESULT(data, "r3", (std::vector<double>{9}));
CHECK_AFFECTATION_RESULT(data, "r4", (std::vector<double>{2.3}));
}
SECTION("from list")
{
std::string_view data = R"(
let (r1,r2):(R)*(R), (r1,r2) = ((1.2,2,3.1),(2.4,1,1.3));
)";
CHECK_AFFECTATION_RESULT(data, "r1", (std::vector<double>{1.2, 2, 3.1}));
CHECK_AFFECTATION_RESULT(data, "r2", (std::vector<double>{2.4, 1, 1.3}));
}
SECTION("from (N)")
{
std::string_view data = R"(
let m : (N), m = (1,2,3);
let (r,n) : (R)*N, (r,n) = (m,2);
)";
CHECK_AFFECTATION_RESULT(data, "r", (std::vector<double>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "n", 2ul);
}
SECTION("from (Z)")
{
std::string_view data = R"(
let z0:(Z), z0 = (1,2,3);
let (r,a): (R)*Z, (r,a) = (z0,3);
)";
CHECK_AFFECTATION_RESULT(data, "r", (std::vector<double>{1, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
SECTION("from (R)")
{
std::string_view data = R"(
let r0:(R), r0 = (1.2,2,3);
let (r,a): (R)*Z, (r,a) = (r0,3);
)";
CHECK_AFFECTATION_RESULT(data, "r", (std::vector<double>{1.2, 2, 3}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
SECTION("(R^1)")
{
using R1 = TinyVector<1>;
SECTION("from value")
{
std::string_view data = R"(
let n:N, n = 9;
let (X1,X2,X3,X4,X5): (R^1)*(R^1)*(R^1)*(R^1)*(R^1), (X1,X2,X3,X4,X5) = (false, -1, n, 2.3, [7.2]);
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R1>{R1(false)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R1>{R1(-1)}));
CHECK_AFFECTATION_RESULT(data, "X3", (std::vector<R1>{R1(9)}));
CHECK_AFFECTATION_RESULT(data, "X4", (std::vector<R1>{R1(2.3)}));
CHECK_AFFECTATION_RESULT(data, "X5", (std::vector<R1>{R1(7.2)}));
}
SECTION("from list")
{
std::string_view data = R"(
let (X1,X2):(R^1)*(R^1), (X1,X2) = (([1.2],2,3.1),([2.4],1, true,1.3));
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R1>{R1(1.2), R1(2), R1(3.1)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R1>{R1(2.4), R1(1), R1(true), R1(1.3)}));
}
SECTION("from (N)")
{
std::string_view data = R"(
let m : (N), m = (1,2,3);
let (X,n) : (R^1)*N, (X,n) = (m,2);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1>{R1(1), R1(2), R1(3)}));
CHECK_AFFECTATION_RESULT(data, "n", 2ul);
}
SECTION("from (Z)")
{
std::string_view data = R"(
let z0:(Z), z0 = (1,2,3);
let (X,a): (R^1)*Z, (X,a) = (z0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1>{R1(1), R1(2), R1(3)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
SECTION("from (R)")
{
std::string_view data = R"(
let r0:(R), r0 = (1.2,2,3);
let (X,a): (R^1)*Z, (X,a) = (r0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1>{R1(1.2), R1(2), R1(3)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
SECTION("from (R^1)")
{
std::string_view data = R"(
let X0:(R^1), X0 = (1.2,2,3);
let (X,a): (R^1)*Z, (X,a) = (X0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1>{R1(1.2), R1(2), R1(3)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
SECTION("R^2")
{
using R2 = TinyVector<2>;
SECTION("from value")
{
std::string_view data = R"(
let (X1,X2): (R^2)*(R^2), (X1,X2) = ([1,2], 0);
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R2>{R2(1, 2)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R2>{R2(0, 0)}));
}
SECTION("from list")
{
std::string_view data = R"(
let (X1,X2):(R^2)*(R^2), (X1,X2) = (([1.2, 2],0,[3,1]),([2.4,1],[true,1.3]));
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R2>{R2(1.2, 2), R2(0, 0), R2(3, 1)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R2>{R2(2.4, 1), R2(true, 1.3)}));
}
SECTION("from (R^2)")
{
std::string_view data = R"(
let X0:(R^2), X0 = ([1.2,2],[3,1],0);
let (X,a): (R^2)*Z, (X,a) = (X0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R2>{R2(1.2, 2), R2(3, 1), R2(0, 0)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
SECTION("R^3")
{
using R3 = TinyVector<3>;
SECTION("from value")
{
std::string_view data = R"(
let (X1,X2): (R^3)*(R^3), (X1,X2) = ([1,2,3], 0);
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R3>{R3(1, 2, 3)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R3>{R3(0, 0, 0)}));
}
SECTION("from list")
{
std::string_view data = R"(
let (X1,X2):(R^3)*(R^3), (X1,X2) = (([5, 1.2, 2],0,[3,6,1]),([2.4,1,1.3],[true,1.3,2]));
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R3>{R3(5, 1.2, 2), R3(0, 0, 0), R3(3, 6, 1)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R3>{R3(2.4, 1, 1.3), R3(true, 1.3, 2)}));
}
SECTION("from (R^3)")
{
std::string_view data = R"(
let X0:(R^3), X0 = ([1.2,-1.3,2],[3,1,5],0);
let (X,a): (R^3)*Z, (X,a) = (X0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R3>{R3(1.2, -1.3, 2), R3(3, 1, 5), R3(0, 0, 0)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
SECTION("R^1x1")
{
using R1x1 = TinyMatrix<1>;
SECTION("from value")
{
std::string_view data = R"(
let n:N, n = 9;
let (X1,X2,X3,X4,X5): (R^1x1)*(R^1x1)*(R^1x1)*(R^1x1)*(R^1x1), (X1,X2,X3,X4,X5) = (false, -1, n, 2.3, [[7.2]]);
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R1x1>{R1x1(false)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R1x1>{R1x1(-1)}));
CHECK_AFFECTATION_RESULT(data, "X3", (std::vector<R1x1>{R1x1(9)}));
CHECK_AFFECTATION_RESULT(data, "X4", (std::vector<R1x1>{R1x1(2.3)}));
CHECK_AFFECTATION_RESULT(data, "X5", (std::vector<R1x1>{R1x1(7.2)}));
}
SECTION("from list")
{
std::string_view data = R"(
let (X1,X2):(R^1x1)*(R^1x1), (X1,X2) = (([[1.2]],2,3.1),([[2.4]],1, true,1.3));
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R1x1>{R1x1(1.2), R1x1(2), R1x1(3.1)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R1x1>{R1x1(2.4), R1x1(1), R1x1(true), R1x1(1.3)}));
}
SECTION("from (N)")
{
std::string_view data = R"(
let m : (N), m = (1,2,3);
let (X,n) : (R^1x1)*N, (X,n) = (m,2);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1x1>{R1x1(1), R1x1(2), R1x1(3)}));
CHECK_AFFECTATION_RESULT(data, "n", 2ul);
}
SECTION("from (Z)")
{
std::string_view data = R"(
let z0:(Z), z0 = (1,2,3);
let (X,a): (R^1x1)*Z, (X,a) = (z0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1x1>{R1x1(1), R1x1(2), R1x1(3)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
SECTION("from (R)")
{
std::string_view data = R"(
let r0:(R), r0 = (1.2,2,3);
let (X,a): (R^1x1)*Z, (X,a) = (r0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1x1>{R1x1(1.2), R1x1(2), R1x1(3)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
SECTION("from (R^1x1)")
{
std::string_view data = R"(
let X0:(R^1x1), X0 = (1.2,2,3);
let (X,a): (R^1x1)*Z, (X,a) = (X0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X", (std::vector<R1x1>{R1x1(1.2), R1x1(2), R1x1(3)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
SECTION("R^2x2")
{
using R2x2 = TinyMatrix<2>;
SECTION("from value")
{
std::string_view data = R"(
let (X1,X2): (R^2x2)*(R^2x2), (X1,X2) = ([[1,2],[3,4]], 0);
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R2x2>{R2x2(1, 2, 3, 4)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R2x2>{R2x2(0, 0, 0, 0)}));
}
SECTION("from list")
{
std::string_view data = R"(
let (X1,X2):(R^2x2)*(R^2x2), (X1,X2) = (([[1.2, 2],[7,4]],0,[[3,1],[5,2]]),([[2.4,1],[1,3]],[[true,1.3],[2,2]]));
)";
CHECK_AFFECTATION_RESULT(data, "X1",
(std::vector<R2x2>{R2x2(1.2, 2, 7, 4), R2x2(0, 0, 0, 0), R2x2(3, 1, 5, 2)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R2x2>{R2x2(2.4, 1, 1, 3), R2x2(true, 1.3, 2, 2)}));
}
SECTION("from (R^2x2)")
{
std::string_view data = R"(
let X0:(R^2x2), X0 = ([[1.2,2],[3,1]],[[3,1],[5,8]],0);
let (X,a): (R^2x2)*Z, (X,a) = (X0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X",
(std::vector<R2x2>{R2x2(1.2, 2, 3, 1), R2x2(3, 1, 5, 8), R2x2(0, 0, 0, 0)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
SECTION("R^3x3")
{
using R3x3 = TinyMatrix<3>;
SECTION("from value")
{
std::string_view data = R"(
let (X1,X2): (R^3x3)*(R^3x3), (X1,X2) = ([[1,2,3],[4,5,6],[7,8,9]], 0);
)";
CHECK_AFFECTATION_RESULT(data, "X1", (std::vector<R3x3>{R3x3(1, 2, 3, 4, 5, 6, 7, 8, 9)}));
CHECK_AFFECTATION_RESULT(data, "X2", (std::vector<R3x3>{R3x3(0, 0, 0, 0, 0, 0, 0, 0, 0)}));
}
SECTION("from list")
{
std::string_view data = R"(
let (X1,X2):(R^3x3)*(R^3x3), (X1,X2) = (([[1.2, 2, 1],[3,1,9],[7,5,4]],0,[[3,0.3,1],[5,7,2],[2,1,8]]),([[3,2.4,1],[2,1,3],[2.2,1.8,3]],[[true,2,1.3],[2.1,4,2],[1.2,2.4,1.2]]));
)";
CHECK_AFFECTATION_RESULT(data, "X1",
(std::vector<R3x3>{R3x3(1.2, 2, 1, 3, 1, 9, 7, 5, 4),
R3x3(0, 0, 0, 0, 0, 0, 0, 0, 0),
R3x3(3, 0.3, 1, 5, 7, 2, 2, 1, 8)}));
CHECK_AFFECTATION_RESULT(data, "X2",
(std::vector<R3x3>{R3x3(3, 2.4, 1, 2, 1, 3, 2.2, 1.8, 3),
R3x3(true, 2, 1.3, 2.1, 4, 2, 1.2, 2.4, 1.2)}));
}
SECTION("from (R^3x3)")
{
std::string_view data = R"(
let X0:(R^3x3), X0 = ([[1.2,7,2],[2,1,6],[1,3,1]],[[3,1,6],[2,7,1],[1,5,8]]);
let (X,a): (R^3x3)*Z, (X,a) = (X0,3);
)";
CHECK_AFFECTATION_RESULT(data, "X",
(std::vector<R3x3>{R3x3(1.2, 7, 2, 2, 1, 6, 1, 3, 1),
R3x3(3, 1, 6, 2, 7, 1, 1, 5, 8)}));
CHECK_AFFECTATION_RESULT(data, "a", 3l);
}
}
}
}
SECTION("+=")
{
SECTION("N")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment