wit-bindgen-cli 0.57.1

CLI tool to generate bindings for WIT documents and the component model.
package export_wit_world

import (
	"fmt"
	"slices"
	test "wit_component/test_lists_to_test"

	. "go.bytecodealliance.org/pkg/wit/types"
)

func Run() {
	test.EmptyListParam([]uint8{})
	test.EmptyStringParam("")
	assertEqual(0, len(test.EmptyListResult()))
	assertEqual(0, len(test.EmptyStringResult()))
	test.ListParam([]uint8{1, 2, 3, 4})
	test.ListParam2("foo")
	test.ListParam3([]string{"foo", "bar", "baz"})
	test.ListParam4([][]string{[]string{"foo", "bar"}, []string{"baz"}})
	test.ListParam5([]Tuple3[uint8, uint32, uint8]{
		Tuple3[uint8, uint32, uint8]{1, 2, 3},
		Tuple3[uint8, uint32, uint8]{4, 5, 6},
	})

	large := make([]string, 0, 1000)
	for i := 0; i < 1000; i++ {
		large = append(large, "string")
	}
	test.ListParamLarge(large)

	assert(slices.Equal(test.ListResult(), []uint8{1, 2, 3, 4, 5}))
	assertEqual(test.ListResult2(), "hello!")
	assert(slices.Equal(test.ListResult3(), []string{"hello,", "world!"}))
	assert(slices.Equal(test.ListRoundtrip([]uint8{}), []uint8{}))

	{
		headers := []Tuple2[string, []uint8]{
			{"Content-Type", []uint8("text/plain")},
			{"Content-Length", []uint8("9")},
		}
		result := test.WasiHttpHeadersRoundtrip(headers)
		assertEqual(len(result), 2)
		assertEqual(result[0].F0, "Content-Type")
		assert(slices.Equal(result[0].F1, []uint8("text/plain")))
		assertEqual(result[1].F0, "Content-Length")
		assert(slices.Equal(result[1].F1, []uint8("9")))
	}
}

func assertEqual[T comparable](a T, b T) {
	if a != b {
		panic(fmt.Sprintf("%v not equal to %v", a, b))
	}
}

func assert(v bool) {
	if !v {
		panic("assertion failed")
	}
}