Branch Coverage

t/svapi/array.cc
Criterion Covered Total %
branch 2039 4912 41.5


line true false branch
6 99 0 perlvars vars;
7 99 0 Array my(vars.av);
10 99 0 SECTION("ctor") {
99 0 SECTION("ctor") {
99 0 SECTION("ctor") {
99 0 SECTION("ctor") {
32 67 SECTION("ctor") {
11 32 0 SECTION("empty") {
32 0 SECTION("empty") {
32 0 SECTION("empty") {
32 0 SECTION("empty") {
1 31 SECTION("empty") {
13 1 0 REQUIRE(!o);
1 0 REQUIRE(!o);
1 0 REQUIRE(!o);
1 0 REQUIRE(!o);
0 0 REQUIRE(!o);
0 0 REQUIRE(!o);
15 32 0 SECTION("from SV") {
32 0 SECTION("from SV") {
32 0 SECTION("from SV") {
32 0 SECTION("from SV") {
22 10 SECTION("from SV") {
16 22 0 SECTION("from undef SV") { Test::ctor(vars.undef, behaviour_t::EMPTY); }
22 0 SECTION("from undef SV") { Test::ctor(vars.undef, behaviour_t::EMPTY); }
22 0 SECTION("from undef SV") { Test::ctor(vars.undef, behaviour_t::EMPTY); }
22 0 SECTION("from undef SV") { Test::ctor(vars.undef, behaviour_t::EMPTY); }
2 20 SECTION("from undef SV") { Test::ctor(vars.undef, behaviour_t::EMPTY); }
2 0 SECTION("from undef SV") { Test::ctor(vars.undef, behaviour_t::EMPTY); }
17 22 0 SECTION("from number SV") { Test::ctor(vars.iv, behaviour_t::THROWS); }
22 0 SECTION("from number SV") { Test::ctor(vars.iv, behaviour_t::THROWS); }
22 0 SECTION("from number SV") { Test::ctor(vars.iv, behaviour_t::THROWS); }
22 0 SECTION("from number SV") { Test::ctor(vars.iv, behaviour_t::THROWS); }
2 20 SECTION("from number SV") { Test::ctor(vars.iv, behaviour_t::THROWS); }
2 0 SECTION("from number SV") { Test::ctor(vars.iv, behaviour_t::THROWS); }
18 22 0 SECTION("from string SV") { Test::ctor(vars.pv, behaviour_t::THROWS); }
22 0 SECTION("from string SV") { Test::ctor(vars.pv, behaviour_t::THROWS); }
22 0 SECTION("from string SV") { Test::ctor(vars.pv, behaviour_t::THROWS); }
22 0 SECTION("from string SV") { Test::ctor(vars.pv, behaviour_t::THROWS); }
2 20 SECTION("from string SV") { Test::ctor(vars.pv, behaviour_t::THROWS); }
2 0 SECTION("from string SV") { Test::ctor(vars.pv, behaviour_t::THROWS); }
19 22 0 SECTION("from RV") { Test::ctor(vars.rv, behaviour_t::THROWS); }
22 0 SECTION("from RV") { Test::ctor(vars.rv, behaviour_t::THROWS); }
22 0 SECTION("from RV") { Test::ctor(vars.rv, behaviour_t::THROWS); }
22 0 SECTION("from RV") { Test::ctor(vars.rv, behaviour_t::THROWS); }
2 20 SECTION("from RV") { Test::ctor(vars.rv, behaviour_t::THROWS); }
2 0 SECTION("from RV") { Test::ctor(vars.rv, behaviour_t::THROWS); }
20 22 0 SECTION("from RV-OAV") { Test::ctor(vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
22 0 SECTION("from RV-OAV") { Test::ctor(vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
22 0 SECTION("from RV-OAV") { Test::ctor(vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
22 0 SECTION("from RV-OAV") { Test::ctor(vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
2 20 SECTION("from RV-OAV") { Test::ctor(vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
2 0 SECTION("from RV-OAV") { Test::ctor(vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
21 22 0 SECTION("from RV-OHV") { Test::ctor(vars.ohvr, behaviour_t::THROWS); }
22 0 SECTION("from RV-OHV") { Test::ctor(vars.ohvr, behaviour_t::THROWS); }
22 0 SECTION("from RV-OHV") { Test::ctor(vars.ohvr, behaviour_t::THROWS); }
22 0 SECTION("from RV-OHV") { Test::ctor(vars.ohvr, behaviour_t::THROWS); }
2 20 SECTION("from RV-OHV") { Test::ctor(vars.ohvr, behaviour_t::THROWS); }
2 0 SECTION("from RV-OHV") { Test::ctor(vars.ohvr, behaviour_t::THROWS); }
22 22 0 SECTION("from AV") { Test::ctor((SV*)vars.av, behaviour_t::VALID); }
22 0 SECTION("from AV") { Test::ctor((SV*)vars.av, behaviour_t::VALID); }
22 0 SECTION("from AV") { Test::ctor((SV*)vars.av, behaviour_t::VALID); }
22 0 SECTION("from AV") { Test::ctor((SV*)vars.av, behaviour_t::VALID); }
2 20 SECTION("from AV") { Test::ctor((SV*)vars.av, behaviour_t::VALID); }
2 0 SECTION("from AV") { Test::ctor((SV*)vars.av, behaviour_t::VALID); }
23 22 0 SECTION("from OAV") { Test::ctor((SV*)vars.oav, behaviour_t::VALID); }
22 0 SECTION("from OAV") { Test::ctor((SV*)vars.oav, behaviour_t::VALID); }
22 0 SECTION("from OAV") { Test::ctor((SV*)vars.oav, behaviour_t::VALID); }
22 0 SECTION("from OAV") { Test::ctor((SV*)vars.oav, behaviour_t::VALID); }
2 20 SECTION("from OAV") { Test::ctor((SV*)vars.oav, behaviour_t::VALID); }
2 0 SECTION("from OAV") { Test::ctor((SV*)vars.oav, behaviour_t::VALID); }
24 22 0 SECTION("from HV") { Test::ctor((SV*)vars.hv, behaviour_t::THROWS); }
22 0 SECTION("from HV") { Test::ctor((SV*)vars.hv, behaviour_t::THROWS); }
22 0 SECTION("from HV") { Test::ctor((SV*)vars.hv, behaviour_t::THROWS); }
22 0 SECTION("from HV") { Test::ctor((SV*)vars.hv, behaviour_t::THROWS); }
2 20 SECTION("from HV") { Test::ctor((SV*)vars.hv, behaviour_t::THROWS); }
2 0 SECTION("from HV") { Test::ctor((SV*)vars.hv, behaviour_t::THROWS); }
25 22 0 SECTION("from CV") { Test::ctor((SV*)vars.cv, behaviour_t::THROWS); }
22 0 SECTION("from CV") { Test::ctor((SV*)vars.cv, behaviour_t::THROWS); }
22 0 SECTION("from CV") { Test::ctor((SV*)vars.cv, behaviour_t::THROWS); }
22 0 SECTION("from CV") { Test::ctor((SV*)vars.cv, behaviour_t::THROWS); }
2 20 SECTION("from CV") { Test::ctor((SV*)vars.cv, behaviour_t::THROWS); }
2 0 SECTION("from CV") { Test::ctor((SV*)vars.cv, behaviour_t::THROWS); }
26 22 0 SECTION("from IO") { Test::ctor((SV*)vars.io, behaviour_t::THROWS); }
22 0 SECTION("from IO") { Test::ctor((SV*)vars.io, behaviour_t::THROWS); }
22 0 SECTION("from IO") { Test::ctor((SV*)vars.io, behaviour_t::THROWS); }
22 0 SECTION("from IO") { Test::ctor((SV*)vars.io, behaviour_t::THROWS); }
2 20 SECTION("from IO") { Test::ctor((SV*)vars.io, behaviour_t::THROWS); }
2 0 SECTION("from IO") { Test::ctor((SV*)vars.io, behaviour_t::THROWS); }
28 32 0 SECTION("from AV") { Test::ctor(vars.av, behaviour_t::VALID); }
32 0 SECTION("from AV") { Test::ctor(vars.av, behaviour_t::VALID); }
32 0 SECTION("from AV") { Test::ctor(vars.av, behaviour_t::VALID); }
32 0 SECTION("from AV") { Test::ctor(vars.av, behaviour_t::VALID); }
2 30 SECTION("from AV") { Test::ctor(vars.av, behaviour_t::VALID); }
2 0 SECTION("from AV") { Test::ctor(vars.av, behaviour_t::VALID); }
30 32 0 SECTION("from Array") { Test::ctor(my, behaviour_t::VALID); }
32 0 SECTION("from Array") { Test::ctor(my, behaviour_t::VALID); }
32 0 SECTION("from Array") { Test::ctor(my, behaviour_t::VALID); }
32 0 SECTION("from Array") { Test::ctor(my, behaviour_t::VALID); }
2 30 SECTION("from Array") { Test::ctor(my, behaviour_t::VALID); }
2 0 SECTION("from Array") { Test::ctor(my, behaviour_t::VALID); }
31 32 0 SECTION("from valid Sv") { Test::ctor(oth_valid, behaviour_t::VALID); }
32 0 SECTION("from valid Sv") { Test::ctor(oth_valid, behaviour_t::VALID); }
32 0 SECTION("from valid Sv") { Test::ctor(oth_valid, behaviour_t::VALID); }
32 0 SECTION("from valid Sv") { Test::ctor(oth_valid, behaviour_t::VALID); }
2 30 SECTION("from valid Sv") { Test::ctor(oth_valid, behaviour_t::VALID); }
2 0 SECTION("from valid Sv") { Test::ctor(oth_valid, behaviour_t::VALID); }
32 32 0 SECTION("from invalid Sv") { Test::ctor(oth_invalid, behaviour_t::THROWS); }
32 0 SECTION("from invalid Sv") { Test::ctor(oth_invalid, behaviour_t::THROWS); }
32 0 SECTION("from invalid Sv") { Test::ctor(oth_invalid, behaviour_t::THROWS); }
32 0 SECTION("from invalid Sv") { Test::ctor(oth_invalid, behaviour_t::THROWS); }
2 30 SECTION("from invalid Sv") { Test::ctor(oth_invalid, behaviour_t::THROWS); }
2 0 SECTION("from invalid Sv") { Test::ctor(oth_invalid, behaviour_t::THROWS); }
33 32 0 SECTION("from ilist") {
32 0 SECTION("from ilist") {
32 0 SECTION("from ilist") {
32 0 SECTION("from ilist") {
1 31 SECTION("from ilist") {
34 1 0 Array o({Simple(100), Simple(200)});
1 0 Array o({Simple(100), Simple(200)});
1 0 Array o({Simple(100), Simple(200)});
2 1 Array o({Simple(100), Simple(200)});
0 0 Array o({Simple(100), Simple(200)});
35 1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
0 0 REQUIRE(o);
0 0 REQUIRE(o);
36 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
37 1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
0 0 REQUIRE(Simple(o[0]) == 100);
0 0 REQUIRE(Simple(o[0]) == 100);
38 1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
0 0 REQUIRE(Simple(o[1]) == 200);
0 0 REQUIRE(Simple(o[1]) == 200);
42 99 0 SECTION("create empty") {
99 0 SECTION("create empty") {
99 0 SECTION("create empty") {
99 0 SECTION("create empty") {
1 98 SECTION("create empty") {
43 1 0 auto o = Array::create();
44 1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
0 0 REQUIRE(o);
0 0 REQUIRE(o);
45 1 0 REQUIRE(o.get());
1 0 REQUIRE(o.get());
1 0 REQUIRE(o.get());
1 0 REQUIRE(o.get());
0 0 REQUIRE(o.get());
0 0 REQUIRE(o.get());
48 99 0 SECTION("operator=") {
99 0 SECTION("operator=") {
99 0 SECTION("operator=") {
99 0 SECTION("operator=") {
36 63 SECTION("operator=") {
49 36 0 auto o = Array::create();
50 36 0 SECTION("SV") {
36 0 SECTION("SV") {
36 0 SECTION("SV") {
36 0 SECTION("SV") {
22 14 SECTION("SV") {
51 22 0 SECTION("undef SV") { Test::assign(o, vars.undef, behaviour_t::EMPTY); }
22 0 SECTION("undef SV") { Test::assign(o, vars.undef, behaviour_t::EMPTY); }
22 0 SECTION("undef SV") { Test::assign(o, vars.undef, behaviour_t::EMPTY); }
22 0 SECTION("undef SV") { Test::assign(o, vars.undef, behaviour_t::EMPTY); }
2 20 SECTION("undef SV") { Test::assign(o, vars.undef, behaviour_t::EMPTY); }
2 0 SECTION("undef SV") { Test::assign(o, vars.undef, behaviour_t::EMPTY); }
52 22 0 SECTION("number SV") { Test::assign(o, vars.iv, behaviour_t::THROWS); }
22 0 SECTION("number SV") { Test::assign(o, vars.iv, behaviour_t::THROWS); }
22 0 SECTION("number SV") { Test::assign(o, vars.iv, behaviour_t::THROWS); }
22 0 SECTION("number SV") { Test::assign(o, vars.iv, behaviour_t::THROWS); }
2 20 SECTION("number SV") { Test::assign(o, vars.iv, behaviour_t::THROWS); }
2 0 SECTION("number SV") { Test::assign(o, vars.iv, behaviour_t::THROWS); }
53 22 0 SECTION("string SV") { Test::assign(o, vars.pv, behaviour_t::THROWS); }
22 0 SECTION("string SV") { Test::assign(o, vars.pv, behaviour_t::THROWS); }
22 0 SECTION("string SV") { Test::assign(o, vars.pv, behaviour_t::THROWS); }
22 0 SECTION("string SV") { Test::assign(o, vars.pv, behaviour_t::THROWS); }
2 20 SECTION("string SV") { Test::assign(o, vars.pv, behaviour_t::THROWS); }
2 0 SECTION("string SV") { Test::assign(o, vars.pv, behaviour_t::THROWS); }
54 22 0 SECTION("RV") { Test::assign(o, vars.rv, behaviour_t::THROWS); }
22 0 SECTION("RV") { Test::assign(o, vars.rv, behaviour_t::THROWS); }
22 0 SECTION("RV") { Test::assign(o, vars.rv, behaviour_t::THROWS); }
22 0 SECTION("RV") { Test::assign(o, vars.rv, behaviour_t::THROWS); }
2 20 SECTION("RV") { Test::assign(o, vars.rv, behaviour_t::THROWS); }
2 0 SECTION("RV") { Test::assign(o, vars.rv, behaviour_t::THROWS); }
55 22 0 SECTION("RV-OAV") { Test::assign(o, vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
22 0 SECTION("RV-OAV") { Test::assign(o, vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
22 0 SECTION("RV-OAV") { Test::assign(o, vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
22 0 SECTION("RV-OAV") { Test::assign(o, vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
2 20 SECTION("RV-OAV") { Test::assign(o, vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
2 0 SECTION("RV-OAV") { Test::assign(o, vars.oavr, behaviour_t::VALID, (SV*)vars.oav); }
56 22 0 SECTION("RV-OHV") { Test::assign(o, vars.ohvr, behaviour_t::THROWS); }
22 0 SECTION("RV-OHV") { Test::assign(o, vars.ohvr, behaviour_t::THROWS); }
22 0 SECTION("RV-OHV") { Test::assign(o, vars.ohvr, behaviour_t::THROWS); }
22 0 SECTION("RV-OHV") { Test::assign(o, vars.ohvr, behaviour_t::THROWS); }
2 20 SECTION("RV-OHV") { Test::assign(o, vars.ohvr, behaviour_t::THROWS); }
2 0 SECTION("RV-OHV") { Test::assign(o, vars.ohvr, behaviour_t::THROWS); }
57 22 0 SECTION("AV") { Test::assign(o, (SV*)vars.av, behaviour_t::VALID); }
22 0 SECTION("AV") { Test::assign(o, (SV*)vars.av, behaviour_t::VALID); }
22 0 SECTION("AV") { Test::assign(o, (SV*)vars.av, behaviour_t::VALID); }
22 0 SECTION("AV") { Test::assign(o, (SV*)vars.av, behaviour_t::VALID); }
2 20 SECTION("AV") { Test::assign(o, (SV*)vars.av, behaviour_t::VALID); }
2 0 SECTION("AV") { Test::assign(o, (SV*)vars.av, behaviour_t::VALID); }
58 22 0 SECTION("OAV") { Test::assign(o, (SV*)vars.oav, behaviour_t::VALID); }
22 0 SECTION("OAV") { Test::assign(o, (SV*)vars.oav, behaviour_t::VALID); }
22 0 SECTION("OAV") { Test::assign(o, (SV*)vars.oav, behaviour_t::VALID); }
22 0 SECTION("OAV") { Test::assign(o, (SV*)vars.oav, behaviour_t::VALID); }
2 20 SECTION("OAV") { Test::assign(o, (SV*)vars.oav, behaviour_t::VALID); }
2 0 SECTION("OAV") { Test::assign(o, (SV*)vars.oav, behaviour_t::VALID); }
59 22 0 SECTION("HV") { Test::assign(o, (SV*)vars.hv, behaviour_t::THROWS); }
22 0 SECTION("HV") { Test::assign(o, (SV*)vars.hv, behaviour_t::THROWS); }
22 0 SECTION("HV") { Test::assign(o, (SV*)vars.hv, behaviour_t::THROWS); }
22 0 SECTION("HV") { Test::assign(o, (SV*)vars.hv, behaviour_t::THROWS); }
2 20 SECTION("HV") { Test::assign(o, (SV*)vars.hv, behaviour_t::THROWS); }
2 0 SECTION("HV") { Test::assign(o, (SV*)vars.hv, behaviour_t::THROWS); }
60 22 0 SECTION("CV") { Test::assign(o, (SV*)vars.cv, behaviour_t::THROWS); }
22 0 SECTION("CV") { Test::assign(o, (SV*)vars.cv, behaviour_t::THROWS); }
22 0 SECTION("CV") { Test::assign(o, (SV*)vars.cv, behaviour_t::THROWS); }
22 0 SECTION("CV") { Test::assign(o, (SV*)vars.cv, behaviour_t::THROWS); }
2 20 SECTION("CV") { Test::assign(o, (SV*)vars.cv, behaviour_t::THROWS); }
2 0 SECTION("CV") { Test::assign(o, (SV*)vars.cv, behaviour_t::THROWS); }
61 22 0 SECTION("IO") { Test::assign(o, (SV*)vars.io, behaviour_t::THROWS); }
22 0 SECTION("IO") { Test::assign(o, (SV*)vars.io, behaviour_t::THROWS); }
22 0 SECTION("IO") { Test::assign(o, (SV*)vars.io, behaviour_t::THROWS); }
22 0 SECTION("IO") { Test::assign(o, (SV*)vars.io, behaviour_t::THROWS); }
2 20 SECTION("IO") { Test::assign(o, (SV*)vars.io, behaviour_t::THROWS); }
2 0 SECTION("IO") { Test::assign(o, (SV*)vars.io, behaviour_t::THROWS); }
63 36 0 SECTION("AV") { Test::assign(o, vars.av, behaviour_t::VALID); }
36 0 SECTION("AV") { Test::assign(o, vars.av, behaviour_t::VALID); }
36 0 SECTION("AV") { Test::assign(o, vars.av, behaviour_t::VALID); }
36 0 SECTION("AV") { Test::assign(o, vars.av, behaviour_t::VALID); }
2 34 SECTION("AV") { Test::assign(o, vars.av, behaviour_t::VALID); }
2 0 SECTION("AV") { Test::assign(o, vars.av, behaviour_t::VALID); }
64 36 0 SECTION("Array") { Test::assign(o, my, behaviour_t::VALID); }
36 0 SECTION("Array") { Test::assign(o, my, behaviour_t::VALID); }
36 0 SECTION("Array") { Test::assign(o, my, behaviour_t::VALID); }
36 0 SECTION("Array") { Test::assign(o, my, behaviour_t::VALID); }
4 32 SECTION("Array") { Test::assign(o, my, behaviour_t::VALID); }
4 0 SECTION("Array") { Test::assign(o, my, behaviour_t::VALID); }
65 36 0 SECTION("valid Sv") { Test::assign(o, oth_valid, behaviour_t::VALID); }
36 0 SECTION("valid Sv") { Test::assign(o, oth_valid, behaviour_t::VALID); }
36 0 SECTION("valid Sv") { Test::assign(o, oth_valid, behaviour_t::VALID); }
36 0 SECTION("valid Sv") { Test::assign(o, oth_valid, behaviour_t::VALID); }
4 32 SECTION("valid Sv") { Test::assign(o, oth_valid, behaviour_t::VALID); }
4 0 SECTION("valid Sv") { Test::assign(o, oth_valid, behaviour_t::VALID); }
66 36 0 SECTION("invalid Sv") { Test::assign(o, oth_invalid, behaviour_t::THROWS); }
36 0 SECTION("invalid Sv") { Test::assign(o, oth_invalid, behaviour_t::THROWS); }
36 0 SECTION("invalid Sv") { Test::assign(o, oth_invalid, behaviour_t::THROWS); }
36 0 SECTION("invalid Sv") { Test::assign(o, oth_invalid, behaviour_t::THROWS); }
4 32 SECTION("invalid Sv") { Test::assign(o, oth_invalid, behaviour_t::THROWS); }
4 0 SECTION("invalid Sv") { Test::assign(o, oth_invalid, behaviour_t::THROWS); }
69 99 0 SECTION("set") {
99 0 SECTION("set") {
99 0 SECTION("set") {
99 0 SECTION("set") {
1 98 SECTION("set") {
71 1 0 o.set(vars.iv); // no checks
72 1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
0 0 REQUIRE(o);
0 0 REQUIRE(o);
73 1 0 REQUIRE(SvREFCNT(vars.iv) == 2);
1 0 REQUIRE(SvREFCNT(vars.iv) == 2);
1 0 REQUIRE(SvREFCNT(vars.iv) == 2);
1 0 REQUIRE(SvREFCNT(vars.iv) == 2);
1 0 REQUIRE(SvREFCNT(vars.iv) == 2);
0 0 REQUIRE(SvREFCNT(vars.iv) == 2);
0 0 REQUIRE(SvREFCNT(vars.iv) == 2);
74 1 0 REQUIRE(o.get() == vars.iv);
1 0 REQUIRE(o.get() == vars.iv);
1 0 REQUIRE(o.get() == vars.iv);
1 0 REQUIRE(o.get() == vars.iv);
1 0 REQUIRE(o.get() == vars.iv);
0 0 REQUIRE(o.get() == vars.iv);
0 0 REQUIRE(o.get() == vars.iv);
77 99 0 SECTION("cast") {
99 0 SECTION("cast") {
99 0 SECTION("cast") {
99 0 SECTION("cast") {
2 97 SECTION("cast") {
78 2 0 Array o(vars.av);
80 2 0 SECTION("to SV") {
2 0 SECTION("to SV") {
2 0 SECTION("to SV") {
2 0 SECTION("to SV") {
1 1 SECTION("to SV") {
82 1 0 REQUIRE(sv == (SV*)vars.av);
1 0 REQUIRE(sv == (SV*)vars.av);
1 0 REQUIRE(sv == (SV*)vars.av);
1 0 REQUIRE(sv == (SV*)vars.av);
1 0 REQUIRE(sv == (SV*)vars.av);
0 0 REQUIRE(sv == (SV*)vars.av);
0 0 REQUIRE(sv == (SV*)vars.av);
83 1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
85 2 0 SECTION("to AV") {
2 0 SECTION("to AV") {
2 0 SECTION("to AV") {
2 0 SECTION("to AV") {
1 1 SECTION("to AV") {
87 1 0 REQUIRE(sv == vars.av);
1 0 REQUIRE(sv == vars.av);
1 0 REQUIRE(sv == vars.av);
1 0 REQUIRE(sv == vars.av);
1 0 REQUIRE(sv == vars.av);
0 0 REQUIRE(sv == vars.av);
0 0 REQUIRE(sv == vars.av);
88 1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
92 99 0 SECTION("get") {
99 0 SECTION("get") {
99 0 SECTION("get") {
99 0 SECTION("get") {
1 98 SECTION("get") {
93 1 0 Array o(vars.av);
95 1 0 REQUIRE(o.get<>() == (SV*)vars.av);
1 0 REQUIRE(o.get<>() == (SV*)vars.av);
1 0 REQUIRE(o.get<>() == (SV*)vars.av);
1 0 REQUIRE(o.get<>() == (SV*)vars.av);
1 0 REQUIRE(o.get<>() == (SV*)vars.av);
0 0 REQUIRE(o.get<>() == (SV*)vars.av);
0 0 REQUIRE(o.get<>() == (SV*)vars.av);
96 1 0 REQUIRE(o.get() == (SV*)vars.av);
1 0 REQUIRE(o.get() == (SV*)vars.av);
1 0 REQUIRE(o.get() == (SV*)vars.av);
1 0 REQUIRE(o.get() == (SV*)vars.av);
1 0 REQUIRE(o.get() == (SV*)vars.av);
0 0 REQUIRE(o.get() == (SV*)vars.av);
0 0 REQUIRE(o.get() == (SV*)vars.av);
97 1 0 REQUIRE(o.get() == vars.av);
1 0 REQUIRE(o.get() == vars.av);
1 0 REQUIRE(o.get() == vars.av);
1 0 REQUIRE(o.get() == vars.av);
1 0 REQUIRE(o.get() == vars.av);
0 0 REQUIRE(o.get() == vars.av);
0 0 REQUIRE(o.get() == vars.av);
98 1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.av) == rcnt);
101 99 0 auto arr = Array::create();
102 99 0 av_push(arr, newSViv(777));
99 0 av_push(arr, newSViv(777));
103 99 0 av_push(arr, newSVpvs("fuckit"));
99 0 av_push(arr, newSVpvs("fuckit"));
104 99 0 av_store(arr, 9, newSViv(555));
99 0 av_store(arr, 9, newSViv(555));
105 99 0 av_extend(arr, 100-1);
107 99 0 SECTION("size/top_index") {
99 0 SECTION("size/top_index") {
99 0 SECTION("size/top_index") {
99 0 SECTION("size/top_index") {
1 98 SECTION("size/top_index") {
109 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
110 1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
0 0 REQUIRE(o.top_index() == -1);
0 0 REQUIRE(o.top_index() == -1);
111 1 0 o = Array::create();
112 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
113 1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
1 0 REQUIRE(o.top_index() == -1);
0 0 REQUIRE(o.top_index() == -1);
0 0 REQUIRE(o.top_index() == -1);
114 1 0 o = arr;
115 1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
116 1 0 REQUIRE(o.top_index() == 9);
1 0 REQUIRE(o.top_index() == 9);
1 0 REQUIRE(o.top_index() == 9);
1 0 REQUIRE(o.top_index() == 9);
1 0 REQUIRE(o.top_index() == 9);
1 0 REQUIRE(o.top_index() == 9);
0 0 REQUIRE(o.top_index() == 9);
0 0 REQUIRE(o.top_index() == 9);
119 99 0 SECTION("capacity") {
99 0 SECTION("capacity") {
99 0 SECTION("capacity") {
99 0 SECTION("capacity") {
1 98 SECTION("capacity") {
121 1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
122 1 0 o = Array::create();
123 1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
124 1 0 o = arr;
125 1 0 REQUIRE(o.capacity() >= 100);
1 0 REQUIRE(o.capacity() >= 100);
1 0 REQUIRE(o.capacity() >= 100);
1 0 REQUIRE(o.capacity() >= 100);
1 0 REQUIRE(o.capacity() >= 100);
1 0 REQUIRE(o.capacity() >= 100);
0 0 REQUIRE(o.capacity() >= 100);
0 0 REQUIRE(o.capacity() >= 100);
128 99 0 SECTION("[]const") { // unsafe getter
99 0 SECTION("[]const") { // unsafe getter
99 0 SECTION("[]const") { // unsafe getter
99 0 SECTION("[]const") { // unsafe getter
1 98 SECTION("[]const") { // unsafe getter
130 1 0 CHECK(Simple(o[0]) == 777);
1 0 CHECK(Simple(o[0]) == 777);
1 0 CHECK(Simple(o[0]) == 777);
1 0 CHECK(Simple(o[0]) == 777);
1 0 CHECK(Simple(o[0]) == 777);
1 0 CHECK(Simple(o[0]) == 777);
1 0 CHECK(Simple(o[0]) == 777);
0 0 CHECK(Simple(o[0]) == 777);
0 0 CHECK(Simple(o[0]) == 777);
131 1 0 CHECK(Simple(o[1]) == "fuckit");
1 0 CHECK(Simple(o[1]) == "fuckit");
1 0 CHECK(Simple(o[1]) == "fuckit");
1 0 CHECK(Simple(o[1]) == "fuckit");
1 0 CHECK(Simple(o[1]) == "fuckit");
1 0 CHECK(Simple(o[1]) == "fuckit");
1 0 CHECK(Simple(o[1]) == "fuckit");
0 0 CHECK(Simple(o[1]) == "fuckit");
0 0 CHECK(Simple(o[1]) == "fuckit");
133 1 0 CHECK(!o[2]);
1 0 CHECK(!o[2]);
1 0 CHECK(!o[2]);
1 0 CHECK(!o[2]);
1 0 CHECK(!o[2]);
0 0 CHECK(!o[2]);
0 0 CHECK(!o[2]);
134 1 0 CHECK(!o[90]);
1 0 CHECK(!o[90]);
1 0 CHECK(!o[90]);
1 0 CHECK(!o[90]);
1 0 CHECK(!o[90]);
0 0 CHECK(!o[90]);
0 0 CHECK(!o[90]);
138 99 0 SECTION("fetch") { // safe getter
99 0 SECTION("fetch") { // safe getter
99 0 SECTION("fetch") { // safe getter
99 0 SECTION("fetch") { // safe getter
1 98 SECTION("fetch") { // safe getter
140 1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
0 0 REQUIRE(!o.fetch(0));
0 0 REQUIRE(!o.fetch(0));
141 1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
0 0 REQUIRE(!o.fetch(1000));
0 0 REQUIRE(!o.fetch(1000));
143 1 0 o = Array::create();
144 1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
1 0 REQUIRE(!o.fetch(0));
0 0 REQUIRE(!o.fetch(0));
0 0 REQUIRE(!o.fetch(0));
145 1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
1 0 REQUIRE(!o.fetch(1000));
0 0 REQUIRE(!o.fetch(1000));
0 0 REQUIRE(!o.fetch(1000));
147 1 0 o = arr;
148 1 0 REQUIRE(Simple(o.fetch(0)) == 777);
1 0 REQUIRE(Simple(o.fetch(0)) == 777);
1 0 REQUIRE(Simple(o.fetch(0)) == 777);
1 0 REQUIRE(Simple(o.fetch(0)) == 777);
1 0 REQUIRE(Simple(o.fetch(0)) == 777);
1 0 REQUIRE(Simple(o.fetch(0)) == 777);
1 0 REQUIRE(Simple(o.fetch(0)) == 777);
0 0 REQUIRE(Simple(o.fetch(0)) == 777);
0 0 REQUIRE(Simple(o.fetch(0)) == 777);
150 1 0 REQUIRE(!o.fetch(2));
1 0 REQUIRE(!o.fetch(2));
1 0 REQUIRE(!o.fetch(2));
1 0 REQUIRE(!o.fetch(2));
1 0 REQUIRE(!o.fetch(2));
0 0 REQUIRE(!o.fetch(2));
0 0 REQUIRE(!o.fetch(2));
151 1 0 REQUIRE(!o.fetch(90));
1 0 REQUIRE(!o.fetch(90));
1 0 REQUIRE(!o.fetch(90));
1 0 REQUIRE(!o.fetch(90));
1 0 REQUIRE(!o.fetch(90));
0 0 REQUIRE(!o.fetch(90));
0 0 REQUIRE(!o.fetch(90));
153 1 0 REQUIRE(!o.fetch(900));
1 0 REQUIRE(!o.fetch(900));
1 0 REQUIRE(!o.fetch(900));
1 0 REQUIRE(!o.fetch(900));
1 0 REQUIRE(!o.fetch(900));
0 0 REQUIRE(!o.fetch(900));
0 0 REQUIRE(!o.fetch(900));
156 99 0 SECTION("at") { // safe getter
99 0 SECTION("at") { // safe getter
99 0 SECTION("at") { // safe getter
99 0 SECTION("at") { // safe getter
1 98 SECTION("at") { // safe getter
158 1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
0 1 REQUIRE_THROWS(o.at(0));
0 0 REQUIRE_THROWS(o.at(0));
0 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
159 1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
0 1 REQUIRE_THROWS(o.at(1000));
0 0 REQUIRE_THROWS(o.at(1000));
0 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
161 1 0 o = Array::create();
162 1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
0 1 REQUIRE_THROWS(o.at(0));
0 0 REQUIRE_THROWS(o.at(0));
0 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
1 0 REQUIRE_THROWS(o.at(0));
163 1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
0 1 REQUIRE_THROWS(o.at(1000));
0 0 REQUIRE_THROWS(o.at(1000));
0 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
1 0 REQUIRE_THROWS(o.at(1000));
165 1 0 o = arr;
166 1 0 REQUIRE(Simple(o.at(0)) == 777);
1 0 REQUIRE(Simple(o.at(0)) == 777);
1 0 REQUIRE(Simple(o.at(0)) == 777);
1 0 REQUIRE(Simple(o.at(0)) == 777);
1 0 REQUIRE(Simple(o.at(0)) == 777);
1 0 REQUIRE(Simple(o.at(0)) == 777);
1 0 REQUIRE(Simple(o.at(0)) == 777);
0 0 REQUIRE(Simple(o.at(0)) == 777);
0 0 REQUIRE(Simple(o.at(0)) == 777);
168 1 0 REQUIRE_THROWS(o.at(2));
1 0 REQUIRE_THROWS(o.at(2));
1 0 REQUIRE_THROWS(o.at(2));
0 1 REQUIRE_THROWS(o.at(2));
0 0 REQUIRE_THROWS(o.at(2));
0 0 REQUIRE_THROWS(o.at(2));
1 0 REQUIRE_THROWS(o.at(2));
1 0 REQUIRE_THROWS(o.at(2));
1 0 REQUIRE_THROWS(o.at(2));
169 1 0 REQUIRE_THROWS(o.at(90));
1 0 REQUIRE_THROWS(o.at(90));
1 0 REQUIRE_THROWS(o.at(90));
0 1 REQUIRE_THROWS(o.at(90));
0 0 REQUIRE_THROWS(o.at(90));
0 0 REQUIRE_THROWS(o.at(90));
1 0 REQUIRE_THROWS(o.at(90));
1 0 REQUIRE_THROWS(o.at(90));
1 0 REQUIRE_THROWS(o.at(90));
171 1 0 REQUIRE_THROWS(o.at(900));
1 0 REQUIRE_THROWS(o.at(900));
1 0 REQUIRE_THROWS(o.at(900));
0 1 REQUIRE_THROWS(o.at(900));
0 0 REQUIRE_THROWS(o.at(900));
0 0 REQUIRE_THROWS(o.at(900));
1 0 REQUIRE_THROWS(o.at(900));
1 0 REQUIRE_THROWS(o.at(900));
1 0 REQUIRE_THROWS(o.at(900));
174 99 0 SECTION("[]") { // unsafe getter
99 0 SECTION("[]") { // unsafe getter
99 0 SECTION("[]") { // unsafe getter
99 0 SECTION("[]") { // unsafe getter
1 98 SECTION("[]") { // unsafe getter
175 1 0 Array o = arr;
176 1 0 REQUIRE(Simple(o[0]) == 777);
1 0 REQUIRE(Simple(o[0]) == 777);
1 0 REQUIRE(Simple(o[0]) == 777);
1 0 REQUIRE(Simple(o[0]) == 777);
1 0 REQUIRE(Simple(o[0]) == 777);
1 0 REQUIRE(Simple(o[0]) == 777);
1 0 REQUIRE(Simple(o[0]) == 777);
0 0 REQUIRE(Simple(o[0]) == 777);
0 0 REQUIRE(Simple(o[0]) == 777);
177 1 0 REQUIRE(Simple(o[1]) == "fuckit");
1 0 REQUIRE(Simple(o[1]) == "fuckit");
1 0 REQUIRE(Simple(o[1]) == "fuckit");
1 0 REQUIRE(Simple(o[1]) == "fuckit");
1 0 REQUIRE(Simple(o[1]) == "fuckit");
1 0 REQUIRE(Simple(o[1]) == "fuckit");
1 0 REQUIRE(Simple(o[1]) == "fuckit");
0 0 REQUIRE(Simple(o[1]) == "fuckit");
0 0 REQUIRE(Simple(o[1]) == "fuckit");
179 1 0 REQUIRE(!o[2]);
1 0 REQUIRE(!o[2]);
1 0 REQUIRE(!o[2]);
1 0 REQUIRE(!o[2]);
1 0 REQUIRE(!o[2]);
0 0 REQUIRE(!o[2]);
0 0 REQUIRE(!o[2]);
180 1 0 REQUIRE(!o[90]);
1 0 REQUIRE(!o[90]);
1 0 REQUIRE(!o[90]);
1 0 REQUIRE(!o[90]);
1 0 REQUIRE(!o[90]);
0 0 REQUIRE(!o[90]);
0 0 REQUIRE(!o[90]);
184 99 0 SECTION("[]=") { // unsafe setter
99 0 SECTION("[]=") { // unsafe setter
99 0 SECTION("[]=") { // unsafe setter
99 0 SECTION("[]=") { // unsafe setter
1 98 SECTION("[]=") { // unsafe setter
185 1 0 Array o = arr;
186 1 0 o[2] = Simple(333);
1 0 o[2] = Simple(333);
1 0 o[2] = Simple(333);
187 1 0 REQUIRE(Simple(o.fetch(2)) == 333);
1 0 REQUIRE(Simple(o.fetch(2)) == 333);
1 0 REQUIRE(Simple(o.fetch(2)) == 333);
1 0 REQUIRE(Simple(o.fetch(2)) == 333);
1 0 REQUIRE(Simple(o.fetch(2)) == 333);
1 0 REQUIRE(Simple(o.fetch(2)) == 333);
1 0 REQUIRE(Simple(o.fetch(2)) == 333);
0 0 REQUIRE(Simple(o.fetch(2)) == 333);
0 0 REQUIRE(Simple(o.fetch(2)) == 333);
190 1 0 o[3] = vars.iv;
1 0 o[3] = vars.iv;
191 1 0 REQUIRE(o[3].get() == vars.iv);
1 0 REQUIRE(o[3].get() == vars.iv);
1 0 REQUIRE(o[3].get() == vars.iv);
1 0 REQUIRE(o[3].get() == vars.iv);
1 0 REQUIRE(o[3].get() == vars.iv);
1 0 REQUIRE(o[3].get() == vars.iv);
0 0 REQUIRE(o[3].get() == vars.iv);
0 0 REQUIRE(o[3].get() == vars.iv);
192 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
193 1 0 o[3] = vars.pv;
1 0 o[3] = vars.pv;
194 1 0 REQUIRE(o[3].get() == vars.pv);
1 0 REQUIRE(o[3].get() == vars.pv);
1 0 REQUIRE(o[3].get() == vars.pv);
1 0 REQUIRE(o[3].get() == vars.pv);
1 0 REQUIRE(o[3].get() == vars.pv);
1 0 REQUIRE(o[3].get() == vars.pv);
0 0 REQUIRE(o[3].get() == vars.pv);
0 0 REQUIRE(o[3].get() == vars.pv);
195 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
196 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
197 1 0 o[3] = nullptr;
1 0 o[3] = nullptr;
198 1 0 REQUIRE(!o[3]);
1 0 REQUIRE(!o[3]);
1 0 REQUIRE(!o[3]);
1 0 REQUIRE(!o[3]);
1 0 REQUIRE(!o[3]);
0 0 REQUIRE(!o[3]);
0 0 REQUIRE(!o[3]);
199 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
201 1 0 o[3] = o[2];
1 0 o[3] = o[2];
1 0 o[3] = o[2];
202 1 0 REQUIRE(o.fetch(3));
1 0 REQUIRE(o.fetch(3));
1 0 REQUIRE(o.fetch(3));
1 0 REQUIRE(o.fetch(3));
1 0 REQUIRE(o.fetch(3));
0 0 REQUIRE(o.fetch(3));
0 0 REQUIRE(o.fetch(3));
203 1 0 REQUIRE(Simple(o.fetch(3)) == 333);
1 0 REQUIRE(Simple(o.fetch(3)) == 333);
1 0 REQUIRE(Simple(o.fetch(3)) == 333);
1 0 REQUIRE(Simple(o.fetch(3)) == 333);
1 0 REQUIRE(Simple(o.fetch(3)) == 333);
1 0 REQUIRE(Simple(o.fetch(3)) == 333);
1 0 REQUIRE(Simple(o.fetch(3)) == 333);
0 0 REQUIRE(Simple(o.fetch(3)) == 333);
0 0 REQUIRE(Simple(o.fetch(3)) == 333);
206 99 0 SECTION("store") { // safe setter
99 0 SECTION("store") { // safe setter
99 0 SECTION("store") { // safe setter
99 0 SECTION("store") { // safe setter
1 98 SECTION("store") { // safe setter
211 1 0 REQUIRE_THROWS(o.store(0, vars.iv));
1 0 REQUIRE_THROWS(o.store(0, vars.iv));
1 0 REQUIRE_THROWS(o.store(0, vars.iv));
0 1 REQUIRE_THROWS(o.store(0, vars.iv));
0 0 REQUIRE_THROWS(o.store(0, vars.iv));
0 0 REQUIRE_THROWS(o.store(0, vars.iv));
1 0 REQUIRE_THROWS(o.store(0, vars.iv));
1 0 REQUIRE_THROWS(o.store(0, vars.iv));
1 0 REQUIRE_THROWS(o.store(0, vars.iv));
213 1 0 o = arr;
214 1 0 o.store(0, vars.iv);
215 1 0 REQUIRE(o[0] == vars.iv);
1 0 REQUIRE(o[0] == vars.iv);
1 0 REQUIRE(o[0] == vars.iv);
1 0 REQUIRE(o[0] == vars.iv);
1 0 REQUIRE(o[0] == vars.iv);
1 0 REQUIRE(o[0] == vars.iv);
0 0 REQUIRE(o[0] == vars.iv);
0 0 REQUIRE(o[0] == vars.iv);
216 1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
217 1 0 o.store(5, vars.iv);
218 1 0 REQUIRE(o[5] == vars.iv);
1 0 REQUIRE(o[5] == vars.iv);
1 0 REQUIRE(o[5] == vars.iv);
1 0 REQUIRE(o[5] == vars.iv);
1 0 REQUIRE(o[5] == vars.iv);
1 0 REQUIRE(o[5] == vars.iv);
0 0 REQUIRE(o[5] == vars.iv);
0 0 REQUIRE(o[5] == vars.iv);
219 1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
220 1 0 o.store(10, vars.pv);
221 1 0 REQUIRE(o[10] == vars.pv);
1 0 REQUIRE(o[10] == vars.pv);
1 0 REQUIRE(o[10] == vars.pv);
1 0 REQUIRE(o[10] == vars.pv);
1 0 REQUIRE(o[10] == vars.pv);
1 0 REQUIRE(o[10] == vars.pv);
0 0 REQUIRE(o[10] == vars.pv);
0 0 REQUIRE(o[10] == vars.pv);
222 1 0 REQUIRE(o.size() == 11);
1 0 REQUIRE(o.size() == 11);
1 0 REQUIRE(o.size() == 11);
1 0 REQUIRE(o.size() == 11);
1 0 REQUIRE(o.size() == 11);
1 0 REQUIRE(o.size() == 11);
0 0 REQUIRE(o.size() == 11);
0 0 REQUIRE(o.size() == 11);
223 1 0 o.store(95, vars.pv);
224 1 0 REQUIRE(o[95] == vars.pv);
1 0 REQUIRE(o[95] == vars.pv);
1 0 REQUIRE(o[95] == vars.pv);
1 0 REQUIRE(o[95] == vars.pv);
1 0 REQUIRE(o[95] == vars.pv);
1 0 REQUIRE(o[95] == vars.pv);
0 0 REQUIRE(o[95] == vars.pv);
0 0 REQUIRE(o[95] == vars.pv);
225 1 0 REQUIRE(o.size() == 96);
1 0 REQUIRE(o.size() == 96);
1 0 REQUIRE(o.size() == 96);
1 0 REQUIRE(o.size() == 96);
1 0 REQUIRE(o.size() == 96);
1 0 REQUIRE(o.size() == 96);
0 0 REQUIRE(o.size() == 96);
0 0 REQUIRE(o.size() == 96);
226 1 0 o.store(1000, vars.pv);
227 1 0 REQUIRE(o[1000] == vars.pv);
1 0 REQUIRE(o[1000] == vars.pv);
1 0 REQUIRE(o[1000] == vars.pv);
1 0 REQUIRE(o[1000] == vars.pv);
1 0 REQUIRE(o[1000] == vars.pv);
1 0 REQUIRE(o[1000] == vars.pv);
0 0 REQUIRE(o[1000] == vars.pv);
0 0 REQUIRE(o[1000] == vars.pv);
228 1 0 REQUIRE(o.size() == 1001);
1 0 REQUIRE(o.size() == 1001);
1 0 REQUIRE(o.size() == 1001);
1 0 REQUIRE(o.size() == 1001);
1 0 REQUIRE(o.size() == 1001);
1 0 REQUIRE(o.size() == 1001);
0 0 REQUIRE(o.size() == 1001);
0 0 REQUIRE(o.size() == 1001);
229 1 0 REQUIRE(o.capacity() >= 1001);
1 0 REQUIRE(o.capacity() >= 1001);
1 0 REQUIRE(o.capacity() >= 1001);
1 0 REQUIRE(o.capacity() >= 1001);
1 0 REQUIRE(o.capacity() >= 1001);
1 0 REQUIRE(o.capacity() >= 1001);
0 0 REQUIRE(o.capacity() >= 1001);
0 0 REQUIRE(o.capacity() >= 1001);
230 1 0 o.store(0, nullptr);
231 1 0 o.store(5, nullptr);
232 1 0 o.store(10, nullptr);
233 1 0 o.store(95, nullptr);
234 1 0 o.store(1000, nullptr);
235 1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
0 0 REQUIRE(!o[0]);
0 0 REQUIRE(!o[0]);
236 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
237 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
239 1 0 o[0] = Simple(111);
1 0 o[0] = Simple(111);
1 0 o[0] = Simple(111);
240 1 0 o.store(1000, o[0]);
1 0 o.store(1000, o[0]);
241 1 0 REQUIRE(Simple(o[1000]) == 111);
1 0 REQUIRE(Simple(o[1000]) == 111);
1 0 REQUIRE(Simple(o[1000]) == 111);
1 0 REQUIRE(Simple(o[1000]) == 111);
1 0 REQUIRE(Simple(o[1000]) == 111);
1 0 REQUIRE(Simple(o[1000]) == 111);
1 0 REQUIRE(Simple(o[1000]) == 111);
0 0 REQUIRE(Simple(o[1000]) == 111);
0 0 REQUIRE(Simple(o[1000]) == 111);
244 99 0 SECTION("reserve") {
99 0 SECTION("reserve") {
99 0 SECTION("reserve") {
99 0 SECTION("reserve") {
1 98 SECTION("reserve") {
245 1 0 auto o = Array::create();
246 1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
247 1 0 o = Array::create(10);
248 1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
0 0 REQUIRE(o.capacity() >= 10);
0 0 REQUIRE(o.capacity() >= 10);
249 1 0 o.reserve(1000);
250 1 0 REQUIRE(o.capacity() >= 1000);
1 0 REQUIRE(o.capacity() >= 1000);
1 0 REQUIRE(o.capacity() >= 1000);
1 0 REQUIRE(o.capacity() >= 1000);
1 0 REQUIRE(o.capacity() >= 1000);
1 0 REQUIRE(o.capacity() >= 1000);
0 0 REQUIRE(o.capacity() >= 1000);
0 0 REQUIRE(o.capacity() >= 1000);
253 99 0 SECTION("resize") {
99 0 SECTION("resize") {
99 0 SECTION("resize") {
99 0 SECTION("resize") {
1 98 SECTION("resize") {
254 1 0 auto o = Array::create();
255 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
256 1 0 o.resize(10);
257 1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
1 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
0 0 REQUIRE(o.size() == 10);
258 1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
1 0 REQUIRE(o.capacity() >= 10);
0 0 REQUIRE(o.capacity() >= 10);
0 0 REQUIRE(o.capacity() >= 10);
261 1 0 o[9] = vars.iv;
1 0 o[9] = vars.iv;
262 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
263 1 0 o.resize(9);
264 1 0 REQUIRE(o.size() == 9);
1 0 REQUIRE(o.size() == 9);
1 0 REQUIRE(o.size() == 9);
1 0 REQUIRE(o.size() == 9);
1 0 REQUIRE(o.size() == 9);
1 0 REQUIRE(o.size() == 9);
0 0 REQUIRE(o.size() == 9);
0 0 REQUIRE(o.size() == 9);
265 1 0 REQUIRE(!o.fetch(9));
1 0 REQUIRE(!o.fetch(9));
1 0 REQUIRE(!o.fetch(9));
1 0 REQUIRE(!o.fetch(9));
1 0 REQUIRE(!o.fetch(9));
0 0 REQUIRE(!o.fetch(9));
0 0 REQUIRE(!o.fetch(9));
266 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
269 99 0 SECTION("exists") {
99 0 SECTION("exists") {
99 0 SECTION("exists") {
99 0 SECTION("exists") {
1 98 SECTION("exists") {
271 1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
272 1 0 o = Array::create();
273 1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
274 1 0 o.reserve(2);
275 1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
276 1 0 o.resize(2);
277 1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
0 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
0 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
278 1 0 o.store(1, vars.iv);
279 1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
0 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
0 0 if (PERL_VERSION >= 20) REQUIRE(!o.exists(0));
280 1 0 REQUIRE(o.exists(1));
1 0 REQUIRE(o.exists(1));
1 0 REQUIRE(o.exists(1));
1 0 REQUIRE(o.exists(1));
1 0 REQUIRE(o.exists(1));
0 0 REQUIRE(o.exists(1));
0 0 REQUIRE(o.exists(1));
281 1 0 av_delete(o, 1, 0);
282 1 0 REQUIRE(!o.exists(1));
1 0 REQUIRE(!o.exists(1));
1 0 REQUIRE(!o.exists(1));
1 0 REQUIRE(!o.exists(1));
1 0 REQUIRE(!o.exists(1));
0 0 REQUIRE(!o.exists(1));
0 0 REQUIRE(!o.exists(1));
285 99 0 SECTION("del") {
99 0 SECTION("del") {
99 0 SECTION("del") {
99 0 SECTION("del") {
1 98 SECTION("del") {
287 1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
0 0 REQUIRE(!o.del(0));
0 0 REQUIRE(!o.del(0));
288 1 0 o = Array::create();
289 1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
0 0 REQUIRE(!o.del(0));
0 0 REQUIRE(!o.del(0));
290 1 0 o.reserve(2);
291 1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
1 0 REQUIRE(!o.del(0));
0 0 REQUIRE(!o.del(0));
0 0 REQUIRE(!o.del(0));
292 1 0 o.resize(2);
293 1 0 if (PERL_VERSION >= 20) REQUIRE(!o.del(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.del(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.del(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.del(0));
1 0 if (PERL_VERSION >= 20) REQUIRE(!o.del(0));
0 0 if (PERL_VERSION >= 20) REQUIRE(!o.del(0));
0 0 if (PERL_VERSION >= 20) REQUIRE(!o.del(0));
296 1 0 o[0] = vars.iv;
1 0 o[0] = vars.iv;
297 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
298 1 0 o[1] = vars.pv;
1 0 o[1] = vars.pv;
299 1 0 REQUIRE(o.del(0).get() == vars.iv);
1 0 REQUIRE(o.del(0).get() == vars.iv);
1 0 REQUIRE(o.del(0).get() == vars.iv);
1 0 REQUIRE(o.del(0).get() == vars.iv);
1 0 REQUIRE(o.del(0).get() == vars.iv);
1 0 REQUIRE(o.del(0).get() == vars.iv);
0 0 REQUIRE(o.del(0).get() == vars.iv);
0 0 REQUIRE(o.del(0).get() == vars.iv);
300 1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
301 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
304 99 0 SECTION("create") {
99 0 SECTION("create") {
99 0 SECTION("create") {
99 0 SECTION("create") {
4 95 SECTION("create") {
305 4 0 SECTION("capacity") {
4 0 SECTION("capacity") {
4 0 SECTION("capacity") {
4 0 SECTION("capacity") {
1 3 SECTION("capacity") {
306 1 0 auto o = Array::create(50);
307 1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
0 0 REQUIRE(o);
0 0 REQUIRE(o);
308 1 0 REQUIRE(o.capacity() >= 50);
1 0 REQUIRE(o.capacity() >= 50);
1 0 REQUIRE(o.capacity() >= 50);
1 0 REQUIRE(o.capacity() >= 50);
1 0 REQUIRE(o.capacity() >= 50);
1 0 REQUIRE(o.capacity() >= 50);
0 0 REQUIRE(o.capacity() >= 50);
0 0 REQUIRE(o.capacity() >= 50);
310 4 0 SECTION("from SV**") {
4 0 SECTION("from SV**") {
4 0 SECTION("from SV**") {
4 0 SECTION("from SV**") {
1 3 SECTION("from SV**") {
311 1 0 auto o = Array::create(0, NULL);
312 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
313 1 0 o = Array::create(0, NULL, Array::COPY);
314 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
318 1 0 o = Array::create(3, args);
319 1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
320 1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
0 0 REQUIRE(o[0].get() == vars.iv);
0 0 REQUIRE(o[0].get() == vars.iv);
321 1 0 REQUIRE(o[1].get() == vars.pv);
1 0 REQUIRE(o[1].get() == vars.pv);
1 0 REQUIRE(o[1].get() == vars.pv);
1 0 REQUIRE(o[1].get() == vars.pv);
1 0 REQUIRE(o[1].get() == vars.pv);
1 0 REQUIRE(o[1].get() == vars.pv);
0 0 REQUIRE(o[1].get() == vars.pv);
0 0 REQUIRE(o[1].get() == vars.pv);
322 1 0 REQUIRE(o[2].get() == vars.rv);
1 0 REQUIRE(o[2].get() == vars.rv);
1 0 REQUIRE(o[2].get() == vars.rv);
1 0 REQUIRE(o[2].get() == vars.rv);
1 0 REQUIRE(o[2].get() == vars.rv);
1 0 REQUIRE(o[2].get() == vars.rv);
0 0 REQUIRE(o[2].get() == vars.rv);
0 0 REQUIRE(o[2].get() == vars.rv);
323 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
324 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
325 1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt+1);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt+1);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt+1);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt+1);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt+1);
0 0 REQUIRE(SvREFCNT(vars.rv) == rcnt+1);
0 0 REQUIRE(SvREFCNT(vars.rv) == rcnt+1);
326 1 0 o.reset();
327 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
328 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
329 1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
331 1 0 o = Array::create(3, args, Array::COPY);
332 1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
333 1 0 REQUIRE(o[0].get() != vars.iv);
1 0 REQUIRE(o[0].get() != vars.iv);
1 0 REQUIRE(o[0].get() != vars.iv);
1 0 REQUIRE(o[0].get() != vars.iv);
1 0 REQUIRE(o[0].get() != vars.iv);
1 0 REQUIRE(o[0].get() != vars.iv);
0 0 REQUIRE(o[0].get() != vars.iv);
0 0 REQUIRE(o[0].get() != vars.iv);
334 1 0 REQUIRE(o[1].get() != vars.pv);
1 0 REQUIRE(o[1].get() != vars.pv);
1 0 REQUIRE(o[1].get() != vars.pv);
1 0 REQUIRE(o[1].get() != vars.pv);
1 0 REQUIRE(o[1].get() != vars.pv);
1 0 REQUIRE(o[1].get() != vars.pv);
0 0 REQUIRE(o[1].get() != vars.pv);
0 0 REQUIRE(o[1].get() != vars.pv);
335 1 0 REQUIRE(o[2].get() != vars.rv);
1 0 REQUIRE(o[2].get() != vars.rv);
1 0 REQUIRE(o[2].get() != vars.rv);
1 0 REQUIRE(o[2].get() != vars.rv);
1 0 REQUIRE(o[2].get() != vars.rv);
1 0 REQUIRE(o[2].get() != vars.rv);
0 0 REQUIRE(o[2].get() != vars.rv);
0 0 REQUIRE(o[2].get() != vars.rv);
336 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
337 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
338 1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
1 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
0 0 REQUIRE(SvREFCNT(vars.rv) == rcnt);
339 1 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
1 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
1 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
1 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
1 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
1 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
1 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
0 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
0 0 REQUIRE(Simple(o[0]) == SvIVX(vars.iv));
340 1 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
1 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
1 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
1 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
1 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
1 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
1 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
0 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
0 0 REQUIRE(Simple(o[1]).get() == SvPVX(vars.pv));
341 1 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
1 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
1 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
1 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
1 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
1 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
1 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
0 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
0 0 REQUIRE(Ref(o[2]).value().get() == SvRV(vars.rv));
344 4 0 SECTION("from Array") {
4 0 SECTION("from Array") {
4 0 SECTION("from Array") {
4 0 SECTION("from Array") {
1 3 SECTION("from Array") {
345 1 0 Array from = Array::create();
346 1 0 from.push(Simple(100));
1 0 from.push(Simple(100));
347 1 0 auto o = Array::create(from);
348 1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
0 0 REQUIRE(o);
0 0 REQUIRE(o);
349 1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
350 1 0 REQUIRE(o[0] == from[0]);
1 0 REQUIRE(o[0] == from[0]);
1 0 REQUIRE(o[0] == from[0]);
1 0 REQUIRE(o[0] == from[0]);
1 0 REQUIRE(o[0] == from[0]);
1 0 REQUIRE(o[0] == from[0]);
1 0 REQUIRE(o[0] == from[0]);
0 0 REQUIRE(o[0] == from[0]);
0 0 REQUIRE(o[0] == from[0]);
353 4 0 SECTION("from ilist") {
4 0 SECTION("from ilist") {
4 0 SECTION("from ilist") {
4 0 SECTION("from ilist") {
1 3 SECTION("from ilist") {
354 1 0 auto o = Array::create({Simple(100), Simple(200)});
1 0 auto o = Array::create({Simple(100), Simple(200)});
1 0 auto o = Array::create({Simple(100), Simple(200)});
2 1 auto o = Array::create({Simple(100), Simple(200)});
0 0 auto o = Array::create({Simple(100), Simple(200)});
355 1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
1 0 REQUIRE(o);
0 0 REQUIRE(o);
0 0 REQUIRE(o);
356 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
357 1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
0 0 REQUIRE(Simple(o[0]) == 100);
0 0 REQUIRE(Simple(o[0]) == 100);
358 1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
0 0 REQUIRE(Simple(o[1]) == 200);
0 0 REQUIRE(Simple(o[1]) == 200);
362 99 0 SECTION("shift") {
99 0 SECTION("shift") {
99 0 SECTION("shift") {
99 0 SECTION("shift") {
1 98 SECTION("shift") {
364 1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
365 1 0 o = Array::create();
366 1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
368 1 0 o.store(1, vars.iv);
369 1 0 o.store(3, vars.pv);
370 1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
371 1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
372 1 0 auto elem = o.shift();
373 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
374 1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
0 0 REQUIRE(elem.get() == vars.iv);
0 0 REQUIRE(elem.get() == vars.iv);
375 1 0 elem.reset();
376 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
377 1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
378 1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
379 1 0 elem = o.shift();
380 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
381 1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
0 0 REQUIRE(elem.get() == vars.pv);
0 0 REQUIRE(elem.get() == vars.pv);
382 1 0 elem.reset();
383 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
384 1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
1 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
0 0 REQUIRE(!o.shift());
385 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
388 99 0 SECTION("pop") {
99 0 SECTION("pop") {
99 0 SECTION("pop") {
99 0 SECTION("pop") {
1 98 SECTION("pop") {
390 1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
391 1 0 o = Array::create();
392 1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
394 1 0 o.store(0, vars.iv);
395 1 0 o.store(2, vars.pv);
396 1 0 o.resize(4);
397 1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
398 1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
1 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
0 0 REQUIRE(o.size() == 3);
399 1 0 auto elem = o.pop();
400 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
401 1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
1 0 REQUIRE(elem.get() == vars.pv);
0 0 REQUIRE(elem.get() == vars.pv);
0 0 REQUIRE(elem.get() == vars.pv);
402 1 0 elem.reset();
403 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
404 1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
405 1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
406 1 0 elem = o.pop();
407 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
408 1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
1 0 REQUIRE(elem.get() == vars.iv);
0 0 REQUIRE(elem.get() == vars.iv);
0 0 REQUIRE(elem.get() == vars.iv);
409 1 0 elem.reset();
410 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
411 1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
1 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
0 0 REQUIRE(!o.pop());
412 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
415 99 0 SECTION("push") {
99 0 SECTION("push") {
99 0 SECTION("push") {
99 0 SECTION("push") {
1 98 SECTION("push") {
416 1 0 auto o = Array::create();
417 1 0 o.push(Scalar());
418 1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
419 1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
0 0 REQUIRE(!o[0]);
0 0 REQUIRE(!o[0]);
421 1 0 o.push(vars.iv);
422 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
423 1 0 REQUIRE(o[1].get() == vars.iv);
1 0 REQUIRE(o[1].get() == vars.iv);
1 0 REQUIRE(o[1].get() == vars.iv);
1 0 REQUIRE(o[1].get() == vars.iv);
1 0 REQUIRE(o[1].get() == vars.iv);
1 0 REQUIRE(o[1].get() == vars.iv);
0 0 REQUIRE(o[1].get() == vars.iv);
0 0 REQUIRE(o[1].get() == vars.iv);
424 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
425 1 0 o.push({vars.pv, vars.rv, vars.ovr});
1 0 o.push({vars.pv, vars.rv, vars.ovr});
1 0 o.push({vars.pv, vars.rv, vars.ovr});
1 0 o.push({vars.pv, vars.rv, vars.ovr});
3 1 o.push({vars.pv, vars.rv, vars.ovr});
0 0 o.push({vars.pv, vars.rv, vars.ovr});
426 1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
0 0 REQUIRE(o.size() == 5);
0 0 REQUIRE(o.size() == 5);
427 1 0 REQUIRE(o[2].get() == vars.pv);
1 0 REQUIRE(o[2].get() == vars.pv);
1 0 REQUIRE(o[2].get() == vars.pv);
1 0 REQUIRE(o[2].get() == vars.pv);
1 0 REQUIRE(o[2].get() == vars.pv);
1 0 REQUIRE(o[2].get() == vars.pv);
0 0 REQUIRE(o[2].get() == vars.pv);
0 0 REQUIRE(o[2].get() == vars.pv);
428 1 0 REQUIRE(o[3].get() == vars.rv);
1 0 REQUIRE(o[3].get() == vars.rv);
1 0 REQUIRE(o[3].get() == vars.rv);
1 0 REQUIRE(o[3].get() == vars.rv);
1 0 REQUIRE(o[3].get() == vars.rv);
1 0 REQUIRE(o[3].get() == vars.rv);
0 0 REQUIRE(o[3].get() == vars.rv);
0 0 REQUIRE(o[3].get() == vars.rv);
429 1 0 REQUIRE(o[4].get() == vars.ovr);
1 0 REQUIRE(o[4].get() == vars.ovr);
1 0 REQUIRE(o[4].get() == vars.ovr);
1 0 REQUIRE(o[4].get() == vars.ovr);
1 0 REQUIRE(o[4].get() == vars.ovr);
1 0 REQUIRE(o[4].get() == vars.ovr);
0 0 REQUIRE(o[4].get() == vars.ovr);
0 0 REQUIRE(o[4].get() == vars.ovr);
430 1 0 o.push(List(Array::create({Simple(100), Simple(200)})));
1 0 o.push(List(Array::create({Simple(100), Simple(200)})));
1 0 o.push(List(Array::create({Simple(100), Simple(200)})));
1 0 o.push(List(Array::create({Simple(100), Simple(200)})));
2 1 o.push(List(Array::create({Simple(100), Simple(200)})));
0 0 o.push(List(Array::create({Simple(100), Simple(200)})));
431 1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
0 0 REQUIRE(o.size() == 7);
0 0 REQUIRE(o.size() == 7);
432 1 0 REQUIRE(Simple(o[5]) == 100);
1 0 REQUIRE(Simple(o[5]) == 100);
1 0 REQUIRE(Simple(o[5]) == 100);
1 0 REQUIRE(Simple(o[5]) == 100);
1 0 REQUIRE(Simple(o[5]) == 100);
1 0 REQUIRE(Simple(o[5]) == 100);
1 0 REQUIRE(Simple(o[5]) == 100);
0 0 REQUIRE(Simple(o[5]) == 100);
0 0 REQUIRE(Simple(o[5]) == 100);
433 1 0 REQUIRE(Simple(o[6]) == 200);
1 0 REQUIRE(Simple(o[6]) == 200);
1 0 REQUIRE(Simple(o[6]) == 200);
1 0 REQUIRE(Simple(o[6]) == 200);
1 0 REQUIRE(Simple(o[6]) == 200);
1 0 REQUIRE(Simple(o[6]) == 200);
1 0 REQUIRE(Simple(o[6]) == 200);
0 0 REQUIRE(Simple(o[6]) == 200);
0 0 REQUIRE(Simple(o[6]) == 200);
436 99 0 SECTION("unshift") {
99 0 SECTION("unshift") {
99 0 SECTION("unshift") {
99 0 SECTION("unshift") {
1 98 SECTION("unshift") {
437 1 0 auto o = Array::create();
438 1 0 o.unshift(Scalar());
439 1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
1 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
0 0 REQUIRE(o.size() == 1);
440 1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
1 0 REQUIRE(!o[0]);
0 0 REQUIRE(!o[0]);
0 0 REQUIRE(!o[0]);
442 1 0 o.unshift(vars.iv);
443 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
444 1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
1 0 REQUIRE(o[0].get() == vars.iv);
0 0 REQUIRE(o[0].get() == vars.iv);
0 0 REQUIRE(o[0].get() == vars.iv);
445 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
446 1 0 o.unshift({vars.pv, vars.rv, vars.ovr});
1 0 o.unshift({vars.pv, vars.rv, vars.ovr});
1 0 o.unshift({vars.pv, vars.rv, vars.ovr});
1 0 o.unshift({vars.pv, vars.rv, vars.ovr});
3 1 o.unshift({vars.pv, vars.rv, vars.ovr});
0 0 o.unshift({vars.pv, vars.rv, vars.ovr});
447 1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
1 0 REQUIRE(o.size() == 5);
0 0 REQUIRE(o.size() == 5);
0 0 REQUIRE(o.size() == 5);
448 1 0 REQUIRE(o[0].get() == vars.pv);
1 0 REQUIRE(o[0].get() == vars.pv);
1 0 REQUIRE(o[0].get() == vars.pv);
1 0 REQUIRE(o[0].get() == vars.pv);
1 0 REQUIRE(o[0].get() == vars.pv);
1 0 REQUIRE(o[0].get() == vars.pv);
0 0 REQUIRE(o[0].get() == vars.pv);
0 0 REQUIRE(o[0].get() == vars.pv);
449 1 0 REQUIRE(o[1].get() == vars.rv);
1 0 REQUIRE(o[1].get() == vars.rv);
1 0 REQUIRE(o[1].get() == vars.rv);
1 0 REQUIRE(o[1].get() == vars.rv);
1 0 REQUIRE(o[1].get() == vars.rv);
1 0 REQUIRE(o[1].get() == vars.rv);
0 0 REQUIRE(o[1].get() == vars.rv);
0 0 REQUIRE(o[1].get() == vars.rv);
450 1 0 REQUIRE(o[2].get() == vars.ovr);
1 0 REQUIRE(o[2].get() == vars.ovr);
1 0 REQUIRE(o[2].get() == vars.ovr);
1 0 REQUIRE(o[2].get() == vars.ovr);
1 0 REQUIRE(o[2].get() == vars.ovr);
1 0 REQUIRE(o[2].get() == vars.ovr);
0 0 REQUIRE(o[2].get() == vars.ovr);
0 0 REQUIRE(o[2].get() == vars.ovr);
451 1 0 o.unshift(List(Array::create({Simple(100), Simple(200)})));
1 0 o.unshift(List(Array::create({Simple(100), Simple(200)})));
1 0 o.unshift(List(Array::create({Simple(100), Simple(200)})));
1 0 o.unshift(List(Array::create({Simple(100), Simple(200)})));
2 1 o.unshift(List(Array::create({Simple(100), Simple(200)})));
0 0 o.unshift(List(Array::create({Simple(100), Simple(200)})));
452 1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
1 0 REQUIRE(o.size() == 7);
0 0 REQUIRE(o.size() == 7);
0 0 REQUIRE(o.size() == 7);
453 1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
1 0 REQUIRE(Simple(o[0]) == 100);
0 0 REQUIRE(Simple(o[0]) == 100);
0 0 REQUIRE(Simple(o[0]) == 100);
454 1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
1 0 REQUIRE(Simple(o[1]) == 200);
0 0 REQUIRE(Simple(o[1]) == 200);
0 0 REQUIRE(Simple(o[1]) == 200);
457 99 0 SECTION("clear/undef") {
99 0 SECTION("clear/undef") {
99 0 SECTION("clear/undef") {
99 0 SECTION("clear/undef") {
1 98 SECTION("clear/undef") {
459 1 0 o.clear();
460 1 0 o.undef();
461 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
462 1 0 o = Array::create();
463 1 0 o.clear();
464 1 0 o.undef();
465 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
468 1 0 o.push({vars.iv, vars.pv});
1 0 o.push({vars.iv, vars.pv});
1 0 o.push({vars.iv, vars.pv});
2 1 o.push({vars.iv, vars.pv});
0 0 o.push({vars.iv, vars.pv});
469 1 0 auto cap = o.capacity();
470 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
471 1 0 o.clear();
472 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
473 1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
474 1 0 REQUIRE(o.capacity() == cap);
1 0 REQUIRE(o.capacity() == cap);
1 0 REQUIRE(o.capacity() == cap);
1 0 REQUIRE(o.capacity() == cap);
1 0 REQUIRE(o.capacity() == cap);
1 0 REQUIRE(o.capacity() == cap);
0 0 REQUIRE(o.capacity() == cap);
0 0 REQUIRE(o.capacity() == cap);
475 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
476 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
478 1 0 o.push({vars.iv, vars.pv});
1 0 o.push({vars.iv, vars.pv});
1 0 o.push({vars.iv, vars.pv});
2 1 o.push({vars.iv, vars.pv});
0 0 o.push({vars.iv, vars.pv});
479 1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
1 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
0 0 REQUIRE(o.size() == 2);
480 1 0 o.undef();
481 1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
1 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
0 0 REQUIRE(o.size() == 0);
482 1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
1 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
0 0 REQUIRE(!o.exists(0));
483 1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
1 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
0 0 REQUIRE(o.capacity() == 0);
484 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
485 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt);
488 99 0 SECTION("iterate") {
99 0 SECTION("iterate") {
99 0 SECTION("iterate") {
99 0 SECTION("iterate") {
1 98 SECTION("iterate") {
490 1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
0 0 REQUIRE(o.begin() == o.end());
0 0 REQUIRE(o.begin() == o.end());
491 1 0 o = Array::create();
492 1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
0 0 REQUIRE(o.begin() == o.end());
0 0 REQUIRE(o.begin() == o.end());
495 1 0 o.push({vars.iv, vars.pv, vars.rv});
1 0 o.push({vars.iv, vars.pv, vars.rv});
1 0 o.push({vars.iv, vars.pv, vars.rv});
1 0 o.push({vars.iv, vars.pv, vars.rv});
3 1 o.push({vars.iv, vars.pv, vars.rv});
0 0 o.push({vars.iv, vars.pv, vars.rv});
496 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
498 1 0 auto it = o.begin();
499 1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
500 1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
0 0 REQUIRE((*it).get() == vars.iv);
0 0 REQUIRE((*it).get() == vars.iv);
501 1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
0 0 REQUIRE(it[1].get() == vars.pv);
0 0 REQUIRE(it[1].get() == vars.pv);
502 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt+1);
504 1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
505 1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
0 0 REQUIRE((*it).get() == vars.pv);
0 0 REQUIRE((*it).get() == vars.pv);
506 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+1);
508 1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
509 1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
0 0 REQUIRE((*it).get() == vars.rv);
0 0 REQUIRE((*it).get() == vars.rv);
511 1 0 REQUIRE(it == o.end());
1 0 REQUIRE(it == o.end());
1 0 REQUIRE(it == o.end());
1 0 REQUIRE(it == o.end());
1 0 REQUIRE(it == o.end());
1 0 REQUIRE(it == o.end());
0 0 REQUIRE(it == o.end());
0 0 REQUIRE(it == o.end());
514 1 0 *it = vars.pv;
1 0 *it = vars.pv;
515 1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
0 0 REQUIRE((*it).get() == vars.pv);
0 0 REQUIRE((*it).get() == vars.pv);
516 1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
1 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
0 0 REQUIRE(SvREFCNT(vars.iv) == icnt);
517 1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+2);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+2);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+2);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+2);
1 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+2);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+2);
0 0 REQUIRE(SvREFCNT(vars.pv) == pcnt+2);
520 99 0 SECTION("const iterate") {
99 0 SECTION("const iterate") {
99 0 SECTION("const iterate") {
99 0 SECTION("const iterate") {
1 98 SECTION("const iterate") {
523 1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
1 0 REQUIRE(o.begin() == o.end());
0 0 REQUIRE(o.begin() == o.end());
0 0 REQUIRE(o.begin() == o.end());
524 1 0 src = Array::create();
525 1 0 REQUIRE(o.cbegin() == o.cend());
1 0 REQUIRE(o.cbegin() == o.cend());
1 0 REQUIRE(o.cbegin() == o.cend());
1 0 REQUIRE(o.cbegin() == o.cend());
1 0 REQUIRE(o.cbegin() == o.cend());
1 0 REQUIRE(o.cbegin() == o.cend());
1 0 REQUIRE(o.cbegin() == o.cend());
0 0 REQUIRE(o.cbegin() == o.cend());
0 0 REQUIRE(o.cbegin() == o.cend());
526 1 0 src.push({vars.iv, vars.pv, vars.rv});
1 0 src.push({vars.iv, vars.pv, vars.rv});
1 0 src.push({vars.iv, vars.pv, vars.rv});
1 0 src.push({vars.iv, vars.pv, vars.rv});
3 1 src.push({vars.iv, vars.pv, vars.rv});
0 0 src.push({vars.iv, vars.pv, vars.rv});
528 1 0 auto it = o.cbegin();
529 1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
530 1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
1 0 REQUIRE((*it).get() == vars.iv);
0 0 REQUIRE((*it).get() == vars.iv);
0 0 REQUIRE((*it).get() == vars.iv);
531 1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
1 0 REQUIRE(it[1].get() == vars.pv);
0 0 REQUIRE(it[1].get() == vars.pv);
0 0 REQUIRE(it[1].get() == vars.pv);
533 1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
1 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
0 0 REQUIRE(it != o.end());
534 1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
1 0 REQUIRE((*it).get() == vars.pv);
0 0 REQUIRE((*it).get() == vars.pv);
0 0 REQUIRE((*it).get() == vars.pv);
536 1 0 REQUIRE(it != o.cend());
1 0 REQUIRE(it != o.cend());
1 0 REQUIRE(it != o.cend());
1 0 REQUIRE(it != o.cend());
1 0 REQUIRE(it != o.cend());
1 0 REQUIRE(it != o.cend());
0 0 REQUIRE(it != o.cend());
0 0 REQUIRE(it != o.cend());
537 1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
1 0 REQUIRE((*it).get() == vars.rv);
0 0 REQUIRE((*it).get() == vars.rv);
0 0 REQUIRE((*it).get() == vars.rv);
539 1 0 REQUIRE(it == o.cend());
1 0 REQUIRE(it == o.cend());
1 0 REQUIRE(it == o.cend());
1 0 REQUIRE(it == o.cend());
1 0 REQUIRE(it == o.cend());
1 0 REQUIRE(it == o.cend());
0 0 REQUIRE(it == o.cend());
0 0 REQUIRE(it == o.cend());
542 99 0 SECTION("multi-deref") {
99 0 SECTION("multi-deref") {
99 0 SECTION("multi-deref") {
99 0 SECTION("multi-deref") {
1 98 SECTION("multi-deref") {
543 1 0 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
1 0 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
1 0 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
1 0 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
1 0 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
2 1 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
1 1 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
0 0 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
0 0 auto o = Array::create({ Ref::create(Array::create({Simple(100)})), Simple(1) });
544 1 0 Simple res = o[0][0];
1 0 Simple res = o[0][0];
1 0 Simple res = o[0][0];
545 1 0 REQUIRE(res);
1 0 REQUIRE(res);
1 0 REQUIRE(res);
1 0 REQUIRE(res);
0 0 REQUIRE(res);
0 0 REQUIRE(res);
546 1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
0 0 REQUIRE(res == 100);
0 0 REQUIRE(res == 100);
547 1 0 o[0][0] = Simple(200);
1 0 o[0][0] = Simple(200);
1 0 o[0][0] = Simple(200);
1 0 o[0][0] = Simple(200);
548 1 0 REQUIRE(o[0][0]);
1 0 REQUIRE(o[0][0]);
1 0 REQUIRE(o[0][0]);
1 0 REQUIRE(o[0][0]);
1 0 REQUIRE(o[0][0]);
1 0 REQUIRE(o[0][0]);
0 0 REQUIRE(o[0][0]);
0 0 REQUIRE(o[0][0]);
549 1 0 REQUIRE(Simple(o[0][0]) == 200);
1 0 REQUIRE(Simple(o[0][0]) == 200);
1 0 REQUIRE(Simple(o[0][0]) == 200);
1 0 REQUIRE(Simple(o[0][0]) == 200);
1 0 REQUIRE(Simple(o[0][0]) == 200);
1 0 REQUIRE(Simple(o[0][0]) == 200);
1 0 REQUIRE(Simple(o[0][0]) == 200);
1 0 REQUIRE(Simple(o[0][0]) == 200);
0 0 REQUIRE(Simple(o[0][0]) == 200);
0 0 REQUIRE(Simple(o[0][0]) == 200);
550 1 0 REQUIRE_THROWS(o[1][0]);
1 0 REQUIRE_THROWS(o[1][0]);
1 0 REQUIRE_THROWS(o[1][0]);
1 0 REQUIRE_THROWS(o[1][0]);
0 1 REQUIRE_THROWS(o[1][0]);
0 0 REQUIRE_THROWS(o[1][0]);
0 0 REQUIRE_THROWS(o[1][0]);
1 0 REQUIRE_THROWS(o[1][0]);
1 0 REQUIRE_THROWS(o[1][0]);
1 0 REQUIRE_THROWS(o[1][0]);
552 1 0 auto h = Hash::create();
553 1 0 h["key"] = Simple(100);
1 0 h["key"] = Simple(100);
1 0 h["key"] = Simple(100);
554 1 0 o.store(2, Ref::create(h));
1 0 o.store(2, Ref::create(h));
555 1 0 res = o[2]["key"];
1 0 res = o[2]["key"];
1 0 res = o[2]["key"];
556 1 0 REQUIRE(res);
1 0 REQUIRE(res);
1 0 REQUIRE(res);
1 0 REQUIRE(res);
0 0 REQUIRE(res);
0 0 REQUIRE(res);
557 1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
1 0 REQUIRE(res == 100);
0 0 REQUIRE(res == 100);
0 0 REQUIRE(res == 100);
558 1 0 o[2]["key"] = Simple(200);
1 0 o[2]["key"] = Simple(200);
1 0 o[2]["key"] = Simple(200);
1 0 o[2]["key"] = Simple(200);
559 1 0 REQUIRE(o[2]["key"]);
1 0 REQUIRE(o[2]["key"]);
1 0 REQUIRE(o[2]["key"]);
1 0 REQUIRE(o[2]["key"]);
1 0 REQUIRE(o[2]["key"]);
1 0 REQUIRE(o[2]["key"]);
0 0 REQUIRE(o[2]["key"]);
0 0 REQUIRE(o[2]["key"]);
560 1 0 REQUIRE(Simple(o[2]["key"]) == 200);
1 0 REQUIRE(Simple(o[2]["key"]) == 200);
1 0 REQUIRE(Simple(o[2]["key"]) == 200);
1 0 REQUIRE(Simple(o[2]["key"]) == 200);
1 0 REQUIRE(Simple(o[2]["key"]) == 200);
1 0 REQUIRE(Simple(o[2]["key"]) == 200);
1 0 REQUIRE(Simple(o[2]["key"]) == 200);
1 0 REQUIRE(Simple(o[2]["key"]) == 200);
0 0 REQUIRE(Simple(o[2]["key"]) == 200);
0 0 REQUIRE(Simple(o[2]["key"]) == 200);
561 1 0 REQUIRE_THROWS(o[1]["key"]);
1 0 REQUIRE_THROWS(o[1]["key"]);
1 0 REQUIRE_THROWS(o[1]["key"]);
1 0 REQUIRE_THROWS(o[1]["key"]);
0 1 REQUIRE_THROWS(o[1]["key"]);
0 0 REQUIRE_THROWS(o[1]["key"]);
0 0 REQUIRE_THROWS(o[1]["key"]);
1 0 REQUIRE_THROWS(o[1]["key"]);
1 0 REQUIRE_THROWS(o[1]["key"]);
1 0 REQUIRE_THROWS(o[1]["key"]);
564 99 0 SECTION("front") {
99 0 SECTION("front") {
99 0 SECTION("front") {
99 0 SECTION("front") {
1 98 SECTION("front") {
566 1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
0 0 REQUIRE(!o.front());
0 0 REQUIRE(!o.front());
567 1 0 o = Array::create();
568 1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
1 0 REQUIRE(!o.front());
0 0 REQUIRE(!o.front());
0 0 REQUIRE(!o.front());
569 1 0 auto v1 = Simple(10);
570 1 0 o.push(v1);
571 1 0 REQUIRE(o.front() == v1);
1 0 REQUIRE(o.front() == v1);
1 0 REQUIRE(o.front() == v1);
1 0 REQUIRE(o.front() == v1);
1 0 REQUIRE(o.front() == v1);
1 0 REQUIRE(o.front() == v1);
0 0 REQUIRE(o.front() == v1);
0 0 REQUIRE(o.front() == v1);
572 1 0 auto v2 = Simple(111);
573 1 0 o.unshift(v2);
574 1 0 REQUIRE(o.front() == v2);
1 0 REQUIRE(o.front() == v2);
1 0 REQUIRE(o.front() == v2);
1 0 REQUIRE(o.front() == v2);
1 0 REQUIRE(o.front() == v2);
1 0 REQUIRE(o.front() == v2);
0 0 REQUIRE(o.front() == v2);
0 0 REQUIRE(o.front() == v2);
577 99 0 SECTION("back") {
99 0 SECTION("back") {
99 0 SECTION("back") {
99 0 SECTION("back") {
1 98 SECTION("back") {
579 1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
0 0 REQUIRE(!o.back());
0 0 REQUIRE(!o.back());
580 1 0 o = Array::create();
581 1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
1 0 REQUIRE(!o.back());
0 0 REQUIRE(!o.back());
0 0 REQUIRE(!o.back());
582 1 0 auto v1 = Simple(10);
583 1 0 o.push(v1);
584 1 0 REQUIRE(o.back() == v1);
1 0 REQUIRE(o.back() == v1);
1 0 REQUIRE(o.back() == v1);
1 0 REQUIRE(o.back() == v1);
1 0 REQUIRE(o.back() == v1);
1 0 REQUIRE(o.back() == v1);
0 0 REQUIRE(o.back() == v1);
0 0 REQUIRE(o.back() == v1);
585 1 0 auto v2 = Simple(111);
586 1 0 o.push(v2);
587 1 0 REQUIRE(o.back() == v2);
1 0 REQUIRE(o.back() == v2);
1 0 REQUIRE(o.back() == v2);
1 0 REQUIRE(o.back() == v2);
1 0 REQUIRE(o.back() == v2);
1 0 REQUIRE(o.back() == v2);
0 0 REQUIRE(o.back() == v2);
0 0 REQUIRE(o.back() == v2);
589 34 0 }
34 0 }