summaryrefslogtreecommitdiff
path: root/libstd/test/option.myr
blob: fa8c5c023344f81feb35411484564438ce4d2cfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use std

const f = {x
	if x == 123
		-> `std.Some 42
	else
		-> `std.None
	;;
}

type t = struct
	next	: std.option(int)
;;

const main = {
	var v, s : t
	
	match `std.Some 42
	| `std.Some x:	std.assert(x == 42, "created wrong value\n")
	| `std.None:	std.assert(false, "should not be reached\n")
	;;

	match `std.None
	| `std.Some x:	std.assert(x, "should not be reached\n")
	| `std.None:	/* everything ok */
	;;

	v = f(123)
	match v
	| `std.Some x:	std.assert(x == 42, "created wrong value\n")
	| `std.None:	std.assert(false, "should not be reached\n")
	;;

	v = f(666)
	match v
	| `std.Some x:	std.assert(false, "should not be reached\n")
	| `std.None:	/* everything ok */
	;;

	s = [.next = `std.None]
	s = [.next = `std.Some 123]
}