|
| 1 | +// Generated file based on named_return_method.go |
| 2 | +// Updated when compliance tests are re-run, DO NOT EDIT! |
| 3 | + |
| 4 | +import * as $ from "@goscript/builtin/index.js"; |
| 5 | + |
| 6 | +export class content { |
| 7 | + public get bytes(): $.Bytes { |
| 8 | + return this._fields.bytes.value |
| 9 | + } |
| 10 | + public set bytes(value: $.Bytes) { |
| 11 | + this._fields.bytes.value = value |
| 12 | + } |
| 13 | + |
| 14 | + public _fields: { |
| 15 | + bytes: $.VarRef<$.Bytes>; |
| 16 | + } |
| 17 | + |
| 18 | + constructor(init?: Partial<{bytes?: $.Bytes}>) { |
| 19 | + this._fields = { |
| 20 | + bytes: $.varRef(init?.bytes ?? new Uint8Array(0)) |
| 21 | + } |
| 22 | + } |
| 23 | + |
| 24 | + public clone(): content { |
| 25 | + const cloned = new content() |
| 26 | + cloned._fields = { |
| 27 | + bytes: $.varRef(this._fields.bytes.value) |
| 28 | + } |
| 29 | + return cloned |
| 30 | + } |
| 31 | + |
| 32 | + public ReadAt(b: $.Bytes, off: number): [number, $.GoError] { |
| 33 | + const c = this |
| 34 | + let n: number = 0 |
| 35 | + let err: $.GoError = null |
| 36 | + if (off < 0 || off >= ($.len(c.bytes) as number)) { |
| 37 | + err = null // Simulate an error scenario |
| 38 | + return [n, err] |
| 39 | + } |
| 40 | + let l = ($.len(b) as number) |
| 41 | + if (off + l > ($.len(c.bytes) as number)) { |
| 42 | + l = ($.len(c.bytes) as number) - off |
| 43 | + } |
| 44 | + let btr = $.goSlice(c.bytes, off, off + l) |
| 45 | + n = $.copy(b, btr) |
| 46 | + return [n, err] |
| 47 | + } |
| 48 | + |
| 49 | + public ProcessData(input: number): [number, string, boolean] { |
| 50 | + const c = this |
| 51 | + let result: number = 0 |
| 52 | + let status: string = "" |
| 53 | + let valid: boolean = false |
| 54 | + result = input * 2 |
| 55 | + if (input > 10) { |
| 56 | + status = "high" |
| 57 | + valid = true |
| 58 | + } else if (input > 0) { |
| 59 | + status = "low" |
| 60 | + valid = true |
| 61 | + } else { |
| 62 | + // status and valid will be zero values |
| 63 | + status = "invalid" |
| 64 | + } |
| 65 | + return [result, status, valid] |
| 66 | + } |
| 67 | + |
| 68 | + // Register this type with the runtime type system |
| 69 | + static __typeInfo = $.registerStructType( |
| 70 | + 'content', |
| 71 | + new content(), |
| 72 | + [{ name: "ReadAt", args: [{ name: "b", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "number" } } }, { name: "off", type: { kind: $.TypeKind.Basic, name: "number" } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "number" } }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "ProcessData", args: [{ name: "input", type: { kind: $.TypeKind.Basic, name: "number" } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "number" } }, { type: { kind: $.TypeKind.Basic, name: "string" } }, { type: { kind: $.TypeKind.Basic, name: "boolean" } }] }], |
| 73 | + content, |
| 74 | + {"bytes": { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "number" } }} |
| 75 | + ); |
| 76 | +} |
| 77 | + |
| 78 | +export async function main(): Promise<void> { |
| 79 | + let c = new content({bytes: $.stringToBytes("Hello, World!")}) |
| 80 | + |
| 81 | + // Test ReadAt method |
| 82 | + let buf = new Uint8Array(5) |
| 83 | + let [n1, err1] = c.ReadAt(buf, 0) |
| 84 | + console.log(n1) // Expected: 5 |
| 85 | + |
| 86 | + // Expected: nil |
| 87 | + if (err1 == null) { |
| 88 | + console.log("nil") // Expected: nil |
| 89 | + } else { |
| 90 | + console.log("error") |
| 91 | + } |
| 92 | + console.log($.bytesToString(buf)) // Expected: Hello |
| 93 | + |
| 94 | + // Test ReadAt with different offset |
| 95 | + let buf2 = new Uint8Array(6) |
| 96 | + let [n2, err2] = c.ReadAt(buf2, 7) |
| 97 | + console.log(n2) // Expected: 6 |
| 98 | + |
| 99 | + // Expected: nil |
| 100 | + if (err2 == null) { |
| 101 | + console.log("nil") // Expected: nil |
| 102 | + } else { |
| 103 | + console.log("error") |
| 104 | + } |
| 105 | + console.log($.bytesToString(buf2)) // Expected: World! |
| 106 | + |
| 107 | + // Test ProcessData method |
| 108 | + let [r1, s1, v1] = c.ProcessData(15) |
| 109 | + console.log(r1) // Expected: 30 |
| 110 | + console.log(s1) // Expected: high |
| 111 | + console.log(v1) // Expected: true |
| 112 | + |
| 113 | + let [r2, s2, v2] = c.ProcessData(5) |
| 114 | + console.log(r2) // Expected: 10 |
| 115 | + console.log(s2) // Expected: low |
| 116 | + console.log(v2) // Expected: true |
| 117 | + |
| 118 | + let [r3, s3, v3] = c.ProcessData(-1) |
| 119 | + console.log(r3) // Expected: -2 |
| 120 | + console.log(s3) // Expected: invalid |
| 121 | + console.log(v3) // Expected: false |
| 122 | +} |
| 123 | + |
0 commit comments