MCPcopy Index your code
hub / github.com/php/frankenphp / TestCFile_PHP_METHOD_Integration

Function TestCFile_PHP_METHOD_Integration

internal/extgen/cfile_phpmethod_test.go:129–187  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

127}
128
129func TestCFile_PHP_METHOD_Integration(t *testing.T) {
130 generator := &Generator{
131 BaseName: "test_extension",
132 Namespace: `Go\Extension`,
133 Functions: []phpFunction{
134 {Name: "testFunc", ReturnType: "void"},
135 },
136 Classes: []phpClass{
137 {
138 Name: "MySuperClass",
139 GoStruct: "MySuperClass",
140 Methods: []phpClassMethod{
141 {
142 Name: "getName",
143 PhpName: "getName",
144 ReturnType: "string",
145 ClassName: "MySuperClass",
146 },
147 {
148 Name: "setName",
149 PhpName: "setName",
150 ReturnType: "void",
151 ClassName: "MySuperClass",
152 Params: []phpParameter{
153 {Name: "name", PhpType: "string"},
154 },
155 },
156 },
157 },
158 },
159 BuildDir: t.TempDir(),
160 }
161
162 cFileGen := cFileGenerator{generator: generator}
163 fullContent, err := cFileGen.buildContent()
164 require.NoError(t, err, "error generating full C file: %v", err)
165
166 expectedDeclarations := []string{
167 "PHP_FUNCTION(Go_Extension_testFunc)",
168 "PHP_METHOD(Go_Extension_MySuperClass, __construct)",
169 "PHP_METHOD(Go_Extension_MySuperClass, getName)",
170 "PHP_METHOD(Go_Extension_MySuperClass, setName)",
171 }
172
173 for _, expected := range expectedDeclarations {
174 require.Contains(t, fullContent, expected, "Expected to find %q in full C file content", expected)
175 }
176
177 oldDeclarations := []string{
178 "PHP_FUNCTION(testFunc)",
179 "PHP_METHOD(MySuperClass, __construct)",
180 "PHP_METHOD(MySuperClass, getName)",
181 "PHP_METHOD(MySuperClass, setName)",
182 }
183
184 for _, old := range oldDeclarations {
185 require.NotContains(t, fullContent, old, "Did not expect to find old declaration %q in full C file content", old)
186 }

Callers

nothing calls this directly

Calls 1

buildContentMethod · 0.95

Tested by

no test coverage detected