Skip to content

Commit

Permalink
Merge pull request #166 from sparkprime/func_tests
Browse files Browse the repository at this point in the history
More tests for named params / default args
  • Loading branch information
sparkprime committed Apr 26, 2016
2 parents 2c806e1 + 1973012 commit 140d65f
Show file tree
Hide file tree
Showing 9 changed files with 116 additions and 0 deletions.
19 changes: 19 additions & 0 deletions test_suite/error.function_arg_positional_after_named.jsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*
Copyright 2015 Google Inc. All rights reserved.
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.
*/

local foo(a, b) = [a, b];

foo(b=3, 4)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
RUNTIME ERROR: Internal error: got positional param after named at index 1
error.function_arg_positional_after_named.jsonnet:19:1-11
17 changes: 17 additions & 0 deletions test_suite/error.function_infinite_default.jsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
Copyright 2015 Google Inc. All rights reserved.
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.
*/

function(x=y, y=x) x
22 changes: 22 additions & 0 deletions test_suite/error.function_infinite_default.jsonnet.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
RUNTIME ERROR: Max stack frames exceeded.
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
...
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:17 thunk <y>
error.function_infinite_default.jsonnet:17:12 thunk <x>
error.function_infinite_default.jsonnet:17:20 function <top_level>
Top-level function
17 changes: 17 additions & 0 deletions test_suite/error.function_no_default_arg.jsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
Copyright 2015 Google Inc. All rights reserved.
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.
*/

function(a=3, b) null
2 changes: 2 additions & 0 deletions test_suite/error.function_no_default_arg.jsonnet.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
RUNTIME ERROR: Function parameter b not bound in call.
Top-level function
11 changes: 11 additions & 0 deletions test_suite/formatter.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,17 @@ limitations under the License.
g: 2,
},

local test_local_default1(x=100, y=200) = {
g: 2,
},

local test_local_default2(
x=100,
y=200)
= {
g: 2,
},

test_field0A: {
g: 1,
},
Expand Down
11 changes: 11 additions & 0 deletions test_suite/formatter.jsonnet.fmt.golden
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,17 @@ limitations under the License.
g: 2,
},

local test_local_default1(x=100, y=200) = {
g: 2,
},

local test_local_default2(
x=100,
y=200)
= {
g: 2,
},

test_field0A: {
g: 1,
},
Expand Down
15 changes: 15 additions & 0 deletions test_suite/functions.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,19 @@ std.assertEqual((local x = 3; function(a=[x, b[1]], b=[a[0], 2]) [a, b])(),
[[3, 2], [3, 2]]) &&
std.assertEqual({ g: 3, f(a=[self.g, b[1]], b=[a[0], 2]): [a, b] }.f(),
[[3, 2], [3, 2]]) &&

local url(host, port=80, protocol="http", url="%s://%s:%d/" % [protocol, host, port]) = url;

std.assertEqual(url("myhost"), "http://myhost:80/") &&
std.assertEqual(url("mybucket", 8080, protocol="gs"), "gs://mybucket:8080/") &&
std.assertEqual(url(null, url="wat"), "wat") &&

local test(a=error "Need a", alt="'" + a + "'") = alt;
std.assertEqual(test(a="Q"), "'Q'") &&
std.assertEqual(test(alt="|Q|"), "|Q|") &&

local X = 3;
std.assertEqual((function(X=4) X)(), 4) &&
std.assertEqual((function(X=4, Y=X) Y)(), 4) &&

true

0 comments on commit 140d65f

Please sign in to comment.