1package main23import (4 "os"5 "log"6 "path/filepath"78 "github.com/plgd-dev/go-coap/v2/message/codes"9 "github.com/plgd-dev/go-coap/v2/udp/message"10 coap "github.com/plgd-dev/go-coap/v2/message"11)1213type genFn func() ([]byte, error)1415func withPayload() ([]byte, error) {16 return message.Message{17 Code: codes.DELETE,18 Token: []byte{},19 Payload: []byte("Hello"),20 MessageID: 1,21 Type: message.Reset,22 }.Marshal()23}2425func basicHeader() ([]byte, error) {26 return message.Message{27 Code: codes.GET,28 Token: []byte{},29 Payload: []byte{},30 MessageID: 2342,31 Type: message.Confirmable,32 }.Marshal()33}3435func withToken() ([]byte, error) {36 return message.Message{37 Code: codes.PUT,38 Token: []byte{23, 42},39 Payload: []byte{},40 MessageID: 5,41 Type: message.Acknowledgement,42 }.Marshal()43}4445func withOptions() ([]byte, error) {46 var opts coap.Options = []coap.Option{47 coap.Option{2, []byte{0xff}},48 coap.Option{23, []byte{13, 37}},49 coap.Option{65535, []byte{}},50 }5152 return message.Message{53 Code: codes.GET,54 Token: []byte{},55 Payload: []byte{},56 MessageID: 2342,57 Type: message.Confirmable,58 Options: opts,59 }.Marshal()60}6162func payloadAndOptions() ([]byte, error) {63 var opts coap.Options = []coap.Option{64 coap.Option{0, []byte("test")},65 }6667 return message.Message{68 Code: codes.DELETE,69 Token: []byte{},70 Payload: []byte("foobar"),71 MessageID: 255,72 Type: message.NonConfirmable,73 Options: opts,74 }.Marshal()75}7677func main() {78 log.SetFlags(log.Lshortfile)7980 testCases := []struct{81 Name string82 Func genFn83 }{84 { "with-payload", withPayload },85 { "basic-header", basicHeader },86 { "with-token", withToken },87 { "with-options", withOptions },88 { "payload-and-options", payloadAndOptions },89 }9091 // Directory where source file is located.92 dir := filepath.Dir(os.Args[0])9394 for _, testCase := range testCases {95 fp := filepath.Join(dir, testCase.Name+".bin")96 file, err := os.Create(fp)97 if err != nil {98 log.Fatal(err)99 }100101 data, err := testCase.Func()102 if err != nil {103 file.Close()104 log.Fatal(err)105 }106107 _, err = file.Write(data)108 if err != nil {109 file.Close()110 log.Fatal(err)111 }112 file.Close()113 }114}