2023-10-12 15:41:57 +03:00
|
|
|
Testing adequacy of the scope calling convention with various types of
|
|
|
|
parameters (reentrant, functions ...) ; and different calls (through subscopes
|
|
|
|
or direct scope calls). The main part of the test is in `mod_use_context`.
|
|
|
|
|
|
|
|
> Module Mod_def_context
|
|
|
|
|
|
|
|
```catala-metadata
|
|
|
|
declaration scope S:
|
|
|
|
context output ci content integer
|
|
|
|
context output cm content money
|
|
|
|
context output cfun1 content decimal depends on x content integer
|
|
|
|
input output cfun2 content decimal depends on x content integer
|
|
|
|
```
|
|
|
|
|
|
|
|
```catala
|
|
|
|
scope S:
|
|
|
|
definition ci equals 0
|
|
|
|
definition cm equals $0
|
|
|
|
definition cfun1 of x equals x / 2
|
|
|
|
```
|
|
|
|
|
|
|
|
Now testing direct calls within the same module
|
|
|
|
|
2023-10-13 17:06:51 +03:00
|
|
|
```catala-metadata
|
2023-10-12 15:41:57 +03:00
|
|
|
declaration third content decimal
|
|
|
|
depends on x content integer
|
|
|
|
equals x / 3
|
|
|
|
|
|
|
|
declaration quarter content decimal
|
|
|
|
depends on x content integer
|
|
|
|
equals x / 4
|
|
|
|
```
|
|
|
|
|
|
|
|
```catala
|
|
|
|
declaration scope Stest:
|
|
|
|
output o1 content S
|
|
|
|
output o2 content S
|
|
|
|
output x11 content decimal
|
|
|
|
output x12 content decimal
|
|
|
|
output x21 content decimal
|
|
|
|
output x22 content decimal
|
|
|
|
|
|
|
|
scope Stest:
|
|
|
|
definition o1 equals
|
|
|
|
output of S with { -- cfun2: quarter }
|
|
|
|
definition o2 equals
|
|
|
|
output of S with {
|
|
|
|
-- ci: 1
|
|
|
|
-- cm: $1
|
|
|
|
-- cfun1: third
|
|
|
|
-- cfun2: quarter
|
|
|
|
}
|
|
|
|
definition x11 equals o1.cfun1 of 24
|
|
|
|
definition x12 equals o1.cfun2 of 24
|
|
|
|
definition x21 equals o2.cfun1 of 24
|
|
|
|
definition x22 equals o2.cfun2 of 24
|
|
|
|
```
|
|
|
|
|
2023-12-05 18:54:14 +03:00
|
|
|
|
|
|
|
|
|
|
|
```catala-test-inline
|
2023-12-05 14:00:15 +03:00
|
|
|
$ catala Typecheck --check-invariants
|
2024-01-25 19:55:32 +03:00
|
|
|
[RESULT] All invariant checks passed
|
2023-12-05 18:54:14 +03:00
|
|
|
[RESULT] Typechecking successful!
|
|
|
|
```
|
|
|
|
|
2023-10-12 15:41:57 +03:00
|
|
|
```catala-test-inline
|
2024-02-26 12:18:08 +03:00
|
|
|
$ catala test-scope Stest
|
2023-10-12 15:41:57 +03:00
|
|
|
[RESULT] Computation successful! Results:
|
|
|
|
[RESULT]
|
|
|
|
o1 = S { -- ci: 0 -- cm: $0.00 -- cfun1: <function> -- cfun2: <function> }
|
|
|
|
[RESULT]
|
|
|
|
o2 = S { -- ci: 1 -- cm: $1.00 -- cfun1: <function> -- cfun2: <function> }
|
|
|
|
[RESULT] x11 = 12.0
|
|
|
|
[RESULT] x12 = 6.0
|
|
|
|
[RESULT] x21 = 8.0
|
|
|
|
[RESULT] x22 = 6.0
|
|
|
|
```
|
|
|
|
|
|
|
|
### Testing subscopes (with and without context override)
|
|
|
|
|
|
|
|
```catala
|
|
|
|
declaration scope TestSubDefault:
|
|
|
|
sub scope S
|
|
|
|
output ci content integer
|
|
|
|
output cm content money
|
|
|
|
output x11 content decimal
|
|
|
|
output x12 content decimal
|
|
|
|
|
|
|
|
scope TestSubDefault:
|
|
|
|
definition sub.cfun2 of x equals quarter of x
|
|
|
|
definition ci equals sub.ci
|
|
|
|
definition cm equals sub.cm
|
|
|
|
definition x11 equals sub.cfun1 of 24
|
|
|
|
definition x12 equals sub.cfun2 of 24
|
|
|
|
```
|
|
|
|
|
|
|
|
```catala-test-inline
|
2024-02-26 12:18:08 +03:00
|
|
|
$ catala test-scope TestSubDefault
|
2023-10-12 15:41:57 +03:00
|
|
|
[RESULT] Computation successful! Results:
|
|
|
|
[RESULT] ci = 0
|
|
|
|
[RESULT] cm = $0.00
|
|
|
|
[RESULT] x11 = 12.0
|
|
|
|
[RESULT] x12 = 6.0
|
|
|
|
```
|
|
|
|
|
|
|
|
```catala
|
|
|
|
declaration scope TestSubOverride:
|
|
|
|
sub scope S
|
|
|
|
output ci content integer
|
|
|
|
output cm content money
|
|
|
|
output x21 content decimal
|
|
|
|
output x22 content decimal
|
|
|
|
|
|
|
|
scope TestSubOverride:
|
|
|
|
definition sub.ci equals 1
|
|
|
|
definition sub.cm equals $1
|
|
|
|
definition sub.cfun1 of x equals third of x
|
|
|
|
definition sub.cfun2 of x equals quarter of x
|
|
|
|
definition ci equals sub.ci
|
|
|
|
definition cm equals sub.cm
|
|
|
|
definition x21 equals sub.cfun1 of 24
|
|
|
|
definition x22 equals sub.cfun2 of 24
|
|
|
|
```
|
|
|
|
|
|
|
|
```catala-test-inline
|
2024-02-26 12:18:08 +03:00
|
|
|
$ catala test-scope TestSubOverride
|
2023-10-12 15:41:57 +03:00
|
|
|
[RESULT] Computation successful! Results:
|
|
|
|
[RESULT] ci = 1
|
|
|
|
[RESULT] cm = $1.00
|
|
|
|
[RESULT] x21 = 8.0
|
|
|
|
[RESULT] x22 = 6.0
|
|
|
|
```
|