248 GadgetPtr nandGadget = NAND_Gadget::create(pb, inputs, output);
250 nandGadget->generateConstraints();
253 EXPECT_ANY_THROW(pb->isSatisfied());
256 for (
const auto &input : inputs) {
259 nandGadget->generateWitness();
260 EXPECT_TRUE(pb->isSatisfied());
261 EXPECT_TRUE(pb->val(output) == 0);
263 pb->val(inputs[2]) = 0;
264 EXPECT_FALSE(pb->isSatisfied());
267 pb->val(inputs[1]) = 2;
268 EXPECT_FALSE(pb->isSatisfied());
270 pb->val(inputs[1]) = 1;
273 EXPECT_TRUE(pb->val(output) == 0);
276 nandGadget->generateWitness();
277 EXPECT_TRUE(pb->val(output) == 1);
278 EXPECT_TRUE(pb->isSatisfied());