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

Displace new list affectation tests to the correct test file

parent 41484637
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,8 +73,6 @@ ...@@ -73,8 +73,6 @@
TEST_CASE("AffectationProcessor", "[language]") TEST_CASE("AffectationProcessor", "[language]")
{ {
SECTION("Affectations") SECTION("Affectations")
{
SECTION("basic types")
{ {
SECTION("B") SECTION("B")
{ {
...@@ -164,477 +162,6 @@ TEST_CASE("AffectationProcessor", "[language]") ...@@ -164,477 +162,6 @@ 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("+=")
{ {
SECTION("N") SECTION("N")
......
...@@ -55,7 +55,7 @@ TEST_CASE("ListAffectationProcessor", "[language]") ...@@ -55,7 +55,7 @@ TEST_CASE("ListAffectationProcessor", "[language]")
return os.str(); return os.str();
}; };
SECTION("ListAffectations") SECTION("basic types list affectations")
{ {
SECTION("R*R^2*R^2x2*string") SECTION("R*R^2*R^2x2*string")
{ {
...@@ -95,4 +95,473 @@ TEST_CASE("ListAffectationProcessor", "[language]") ...@@ -95,4 +95,473 @@ TEST_CASE("ListAffectationProcessor", "[language]")
CHECK_AFFECTATION_RESULT(R"(let (x,y,z):R^3x3*R^2x2*R^1x1, (x,y,z) = (0,0,0);)", "z", (TinyMatrix<1>{zero})); CHECK_AFFECTATION_RESULT(R"(let (x,y,z):R^3x3*R^2x2*R^1x1, (x,y,z) = (0,0,0);)", "z", (TinyMatrix<1>{zero}));
} }
} }
SECTION("lists with tuples affectation")
{
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);
}
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment