scope test_BStack_v2

please include function test_BStack.

/* Goal: Java code with backtracking, like this, to return 4 different values:

  S color = "black" or "white";
  S shape = "circle" or "square";
  return "A " + color + " " + shape;
*/

svoid test_BStack_v2() {
  test_BStack_v2_oneBranch();
  test_BStack_v2_twoBranches();
  test_BStack_v2_undos();
  test_BStack_v2_oneBranch3Options();
  test_BStack_v2_twoBranches3Options();
  test_BStack_v2_noOptions();
}

svoid test_BStack_v2_oneBranch() {
  assertEqualsVerbose(
    ll("Color is black", "Color is white"),
    new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_OneBranch)!);
}

svoid test_BStack_v2_oneBranch3Options() {
  assertEqualsVerbose(
    ll("Color is black", "Color is white", "Color is gray"),
    new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_OneBranch3Options)!);
}

svoid test_BStack_v2_twoBranches() {
  assertEqualsVerbose(
    ll("A black circle", "A black square",
      "A white circle", "A white square"),
    new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_TwoBranches)!);
}

svoid test_BStack_v2_twoBranches3Options() {
  assertEqualsVerbose(
    ll("A black circle", "A black square", "A black triangle",
      "A white circle", "A white square", "A white triangle",
      "A gray circle", "A gray square", "A gray triangle"),
    new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_TwoBranches3Options)!);
}

svoid test_BStack_v2_undos() {
  new LS colors; // list that is changed during execution to test the undos
  
  var stack = new BStack_v2<>(new test_BStack_TwoBranchesWithUndos(colors));
  for (S color : ll("black", "white"))
    for (S shape : ll("circle", "square")) {
      assertEqualsVerbose("A \*color*/ \*shape*/", stack.nextResultWithPrintStruct(10));
      assertEqualsVerbose(ll(color), colors);
      stack = stack.backtrack();
    }
  assertNull(stack);
}

svoid test_BStack_v2_noOptions() {
  assertInnerExceptionOfTypeVerbose(BStack_v2.NoOptionsException.class,
    -> new BStackComputeAllWithPrintStruct(new BStack_v2, new test_BStack_NoOptions)!);
}