20#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_TOFINO_TEST_BACKEND_PTF_H_
21#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_TOFINO_TEST_BACKEND_PTF_H_
30#include <inja/inja.hpp>
33#include "lib/cstring.h"
35#include "backends/p4tools/modules/testgen/lib/test_framework.h"
37namespace P4::P4Tools::P4Testgen::Tofino {
42 bool preambleEmitted =
false;
45 std::ofstream ptfFileStream;
48 ~PTF()
override =
default;
50 PTF(
const PTF &) =
delete;
54 PTF &operator=(
const PTF &) =
delete;
56 PTF &operator=(PTF &&) =
delete;
62 float currentCoverage)
override;
74 void emitTestcase(
const TestSpec *testSpec,
cstring selectedBranches,
size_t testIdx,
75 const std::string &testCase,
float currentCoverage);
78 static std::string getTestCaseTemplate();
81 static inja::json getControlPlane(
const TestSpec *testSpec);
84 static inja::json getSend(
const TestSpec *testSpec);
87 static inja::json getVerify(
const TestSpec *testSpec);
91 static std::vector<std::pair<size_t, size_t>> getIgnoreMasks(
const IR::Constant *mask);
94 static inja::json getControlPlaneForTable(
const TableMatchMap &matches,
95 const std::vector<ActionArg> &args);