]> Cypherpunks.ru repositories - gostls13.git/blobdiff - misc/swig/testdata/stdio/main.go
misc/swig: restructure as a driver
[gostls13.git] / misc / swig / testdata / stdio / main.go
diff --git a/misc/swig/testdata/stdio/main.go b/misc/swig/testdata/stdio/main.go
new file mode 100644 (file)
index 0000000..0296dd3
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This file is here just to cause problems.
+// main.swig turns into a file also named main.go.
+// Make sure cmd/go keeps them separate
+// when both are passed to cgo.
+
+package main
+
+//int F(void) { return 1; }
+import "C"
+import (
+       "fmt"
+       "os"
+)
+
+func F() int { return int(C.F()) }
+
+func main() {
+       if x := int(C.F()); x != 1 {
+               fatal("x = %d, want 1", x)
+       }
+
+       // Open this file itself and verify that the first few characters are
+       // as expected.
+       f := Fopen("main.go", "r")
+       if f.Swigcptr() == 0 {
+               fatal("fopen failed")
+       }
+       if Fgetc(f) != '/' || Fgetc(f) != '/' || Fgetc(f) != ' ' || Fgetc(f) != 'C' {
+               fatal("read unexpected characters")
+       }
+       if Fclose(f) != 0 {
+               fatal("fclose failed")
+       }
+
+       println("OK")
+}
+
+func fatal(f string, args ...any) {
+       fmt.Fprintln(os.Stderr, fmt.Sprintf(f, args...))
+       os.Exit(1)
+}