MCPcopy
hub / github.com/expr-lang/expr / TestVM_MemoryBudget

Function TestVM_MemoryBudget

vm/vm_test.go:1302–1347  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1300}
1301
1302func TestVM_MemoryBudget(t *testing.T) {
1303 tests := []struct {
1304 name string
1305 expr string
1306 memBudget uint
1307 expectError string
1308 }{
1309 {
1310 name: "under budget",
1311 expr: "map(1..10, #)",
1312 memBudget: 100,
1313 },
1314 {
1315 name: "exceeds budget",
1316 expr: "map(1..1000, #)",
1317 memBudget: 10,
1318 expectError: "memory budget exceeded",
1319 },
1320 {
1321 name: "zero budget uses default",
1322 expr: "map(1..10, #)",
1323 memBudget: 0,
1324 },
1325 }
1326
1327 for _, tt := range tests {
1328 t.Run(tt.name, func(t *testing.T) {
1329 node, err := parser.Parse(tt.expr)
1330 require.NoError(t, err)
1331
1332 program, err := compiler.Compile(node, nil)
1333 require.NoError(t, err)
1334
1335 vm := vm.VM{MemoryBudget: tt.memBudget}
1336 out, err := vm.Run(program, nil)
1337
1338 if tt.expectError != "" {
1339 require.Error(t, err)
1340 require.Contains(t, err.Error(), tt.expectError)
1341 } else {
1342 require.NoError(t, err)
1343 require.NotNil(t, out)
1344 }
1345 })
1346 }
1347}
1348
1349// Helper functions for creating deeply nested expressions
1350func createNestedArithmeticExpr(t *testing.T, depth int) string {

Callers

nothing calls this directly

Calls 8

RunMethod · 0.95
ParseFunction · 0.92
NoErrorFunction · 0.92
CompileFunction · 0.92
ErrorFunction · 0.92
ContainsFunction · 0.92
NotNilFunction · 0.92
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…