diff options
author | Googler <noreply@google.com> | 2018-04-27 10:37:02 -0700 |
---|---|---|
committer | Adin Scannell <ascannell@google.com> | 2018-04-28 01:44:26 -0400 |
commit | d02b74a5dcfed4bfc8f2f8e545bca4d2afabb296 (patch) | |
tree | 54f95eef73aee6bacbfc736fffc631be2605ed53 /tools/go_generics/rules_tests | |
parent | f70210e742919f40aa2f0934a22f1c9ba6dada62 (diff) |
Check in gVisor.
PiperOrigin-RevId: 194583126
Change-Id: Ica1d8821a90f74e7e745962d71801c598c652463
Diffstat (limited to 'tools/go_generics/rules_tests')
-rw-r--r-- | tools/go_generics/rules_tests/BUILD | 43 | ||||
-rw-r--r-- | tools/go_generics/rules_tests/template.go | 42 | ||||
-rw-r--r-- | tools/go_generics/rules_tests/template_test.go | 48 |
3 files changed, 133 insertions, 0 deletions
diff --git a/tools/go_generics/rules_tests/BUILD b/tools/go_generics/rules_tests/BUILD new file mode 100644 index 000000000..2d9a6fa9d --- /dev/null +++ b/tools/go_generics/rules_tests/BUILD @@ -0,0 +1,43 @@ +package(licenses = ["notice"]) # Apache 2.0 + +load("@io_bazel_rules_go//go:def.bzl", "go_test") +load("//tools/go_generics:defs.bzl", "go_template", "go_template_instance") + +go_template_instance( + name = "instance", + out = "instance_test.go", + consts = { + "n": "20", + "m": "\"test\"", + "o": "math.MaxUint64", + }, + imports = { + "math": "math", + }, + package = "template_test", + template = ":test_template", + types = { + "t": "int", + }, +) + +go_template( + name = "test_template", + srcs = [ + "template.go", + ], + opt_consts = [ + "n", + "m", + "o", + ], + opt_types = ["t"], +) + +go_test( + name = "template_test", + srcs = [ + "instance_test.go", + "template_test.go", + ], +) diff --git a/tools/go_generics/rules_tests/template.go b/tools/go_generics/rules_tests/template.go new file mode 100644 index 000000000..73c024f0e --- /dev/null +++ b/tools/go_generics/rules_tests/template.go @@ -0,0 +1,42 @@ +// Copyright 2018 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package template + +type t float + +const ( + n t = 10.1 + m = "abc" + o = 0 +) + +func max(a, b t) t { + if a > b { + return a + } + return b +} + +func add(a t) t { + return a + n +} + +func getName() string { + return m +} + +func getMax() uint64 { + return o +} diff --git a/tools/go_generics/rules_tests/template_test.go b/tools/go_generics/rules_tests/template_test.go new file mode 100644 index 000000000..76c4cdb64 --- /dev/null +++ b/tools/go_generics/rules_tests/template_test.go @@ -0,0 +1,48 @@ +// Copyright 2018 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package template_test + +import ( + "math" + "testing" +) + +func TestMax(t *testing.T) { + var a int = max(10, 20) + if a != 20 { + t.Errorf("Bad result of max, got %v, want %v", a, 20) + } +} + +func TestIntConst(t *testing.T) { + var a int = add(10) + if a != 30 { + t.Errorf("Bad result of add, got %v, want %v", a, 30) + } +} + +func TestStrConst(t *testing.T) { + v := getName() + if v != "test" { + t.Errorf("Bad name, got %v, want %v", v, "test") + } +} + +func TestImport(t *testing.T) { + v := getMax() + if v != math.MaxUint64 { + t.Errorf("Bad max value, got %v, want %v", v, uint64(math.MaxUint64)) + } +} |