64 const std::uint64_t idA = scene.
add(a);
65 if (idA == 0 || scene.
size() != 1) {
66 return fail(errorMessage,
"PotentialScene2D: add failed");
72 const std::uint64_t idB = scene.
add(b);
73 if (idB == 0 || idB == idA || scene.
size() != 2) {
74 return fail(errorMessage,
"PotentialScene2D: id allocation failed");
81 if (!near(field(8, 8), 5.0f)) {
82 std::ostringstream os;
83 os <<
"PotentialScene2D: additive overlap expected 5, got " << field(8, 8);
84 errorMessage = os.str();
90 return fail(errorMessage,
"PotentialScene2D: find failed");
94 if (!near(field(8, 8), 2.0f)) {
95 return fail(errorMessage,
"PotentialScene2D: disabled object was rasterized");
100 if (!scene.
update(idA, changed)) {
101 return fail(errorMessage,
"PotentialScene2D: update failed");
104 if (!near(field(8, 8), 7.0f)) {
105 return fail(errorMessage,
"PotentialScene2D: updated object not applied");
108 if (!scene.
remove(idB) || scene.
size() != 1) {
109 return fail(errorMessage,
"PotentialScene2D: remove failed");
115 gaussian.
value = -4.0f;
121 harmonic.
value = 1.0f;
127 if (!near(smoothField(50, 50), -3.0f, 1.0e-4f)) {
128 return fail(errorMessage,
"PotentialScene2D: smooth additive composition failed");
134 if (scene.
add(invalid) != 0) {
135 return fail(errorMessage,
"PotentialScene2D: invalid object accepted");