public void generateTestFunction()

in codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/integration/HttpProtocolUnitTestGenerator.java [216:267]


    public void generateTestFunction(GoWriter writer) {
        writer.addUseImports(SmithyGoDependency.TESTING);
        writer.openBlock("func " + unitTestFuncNameFormat() + "(t *testing.T) {", "}", unitTestFuncNameArgs(),
                () -> {
                    skipTests.forEach((skipTest) -> {
                        if (skipTest.matches(service.getId(), operation.getId())) {
                            writer.write("t.Skip(\"disabled test $L $L\")", service.getId(), operation.getId());
                            writer.write("");
                        }
                    });
                    generateTestSetup(writer);

                    writer.write("cases := map[string]struct {");
                    generateTestCaseParams(writer);
                    writer.openBlock("}{", "}", () -> {
                        for (T testCase : testCases) {
                            Optional<AppliesTo> appliesTo = testCase.getAppliesTo();
                            if (appliesTo.isPresent() && !(appliesTo.get().equals(AppliesTo.CLIENT))) {
                                continue;
                            }

                            testCase.getDocumentation().ifPresent(writer::writeDocs);
                            writer.openBlock("$S: {", "},", testCase.getId(), () -> {
                                generateTestCaseValues(writer, testCase);
                            });
                        }
                    });

                    // And test case iteration/assertions
                    writer.openBlock("for name, c := range cases {", "}", () -> {
                        writer.openBlock("t.Run(name, func(t *testing.T) {", "})", () -> {
                            skipTests.forEach((skipTest) -> {
                                for (T testCase : testCases) {
                                    if (skipTest.matches(service.getId(), operation.getId(), testCase.getId())) {
                                        writer.openBlock("if name == $S {", "}", testCase.getId(), () -> {
                                            writer.write("t.Skip(\"disabled test $L $L\")", service.getId(),
                                                    operation.getId());
                                        });
                                        writer.write("");
                                    }
                                }
                            });

                            generateTestBodySetup(writer);
                            generateTestServer(writer, "server", this::generateTestServerHandler);
                            generateTestClient(writer, "client");
                            generateTestInvokeClientOperation(writer, "client");
                            generateTestAssertions(writer);
                        });
                    });
                });
    }