|
1 | 1 | use pretty_assertions::assert_eq;
|
2 |
| -use wit_encoder::{Params, Result_, Results, StandaloneFunc, Type}; |
| 2 | +use wit_encoder::{ |
| 3 | + Interface, Package, PackageName, Params, Result_, Results, StandaloneFunc, Type, |
| 4 | +}; |
3 | 5 |
|
4 |
| -const PACKAGE: &str = "package foo:functions; |
| 6 | +const PACKAGE: &str = indoc::indoc! {" |
| 7 | + package foo:functions; |
5 | 8 |
|
6 |
| -interface functions { |
7 |
| - f1: func(); |
8 |
| - f2: func(a: u32); |
9 |
| - f3: func() -> u32; |
10 |
| - /// this is a documentation comment |
11 |
| - /// for the f4 function |
12 |
| - f4: func() -> tuple<u32, u32>; |
13 |
| - f5: func(a: f32, b: f32) -> tuple<u32, u32>; |
14 |
| - f6: func(a: option<u32>) -> result<u32, f32>; |
15 |
| - f7: func() -> (u: u32, f: f32); |
16 |
| - f8: func() -> (u: u32); |
17 |
| - f9: func() -> result<f32>; |
18 |
| - f10: func() -> result<_, f32>; |
19 |
| - f11: func() -> result; |
20 |
| -} |
21 |
| -"; |
| 9 | + interface functions { |
| 10 | + f1: func(); |
| 11 | + f2: func(a: u32); |
| 12 | + f4: func() -> u32; |
| 13 | + f6: func() -> tuple<u32, u32>; |
| 14 | + f7: func(a: f32, b: f32) -> tuple<u32, u32>; |
| 15 | + f8: func(a: option<u32>) -> result<u32, f32>; |
| 16 | + f9: func() -> (u: u32, f: f32); |
| 17 | + f10: func() -> (u: u32); |
| 18 | + f11: func() -> result<f32>; |
| 19 | + f12: func() -> result<_, f32>; |
| 20 | + f13: func() -> result; |
| 21 | + } |
| 22 | +"}; |
22 | 23 |
|
23 | 24 | #[test]
|
24 |
| -fn smoke() { |
25 |
| - let name = wit_encoder::PackageName::new("foo", "functions", None); |
26 |
| - let mut package = wit_encoder::Package::new(name); |
| 25 | +fn concrete_types() { |
| 26 | + let name = PackageName::new("foo", "functions", None); |
| 27 | + let mut package = Package::new(name); |
27 | 28 |
|
28 | 29 | package.interface({
|
29 |
| - let mut interface = wit_encoder::Interface::new("functions"); |
| 30 | + let mut interface = Interface::new("functions"); |
30 | 31 | interface.function(StandaloneFunc::new("f1"));
|
31 | 32 | interface.function({
|
32 | 33 | let mut func = StandaloneFunc::new("f2");
|
33 | 34 | func.params(Params::from_iter([("a", Type::U32)]));
|
34 | 35 | func
|
35 | 36 | });
|
36 | 37 | interface.function({
|
37 |
| - let mut func = StandaloneFunc::new("f3"); |
38 |
| - func.results(Type::U32); |
| 38 | + let mut func = StandaloneFunc::new("f4"); |
| 39 | + func.results(Results::anon(Type::U32)); |
39 | 40 | func
|
40 | 41 | });
|
41 | 42 | interface.function({
|
42 |
| - let mut func = StandaloneFunc::new("f4"); |
43 |
| - func.results(Type::tuple(vec![Type::U32, Type::U32])); |
44 |
| - func.docs(Some("this is a documentation comment\nfor the f4 function")); |
| 43 | + let mut func = StandaloneFunc::new("f6"); |
| 44 | + func.results(Results::anon(Type::tuple(vec![Type::U32, Type::U32]))); |
45 | 45 | func
|
46 | 46 | });
|
47 | 47 | interface.function({
|
48 |
| - let mut func = StandaloneFunc::new("f5"); |
| 48 | + let mut func = StandaloneFunc::new("f7"); |
49 | 49 | func.params(Params::from_iter([("a", Type::F32), ("b", Type::F32)]));
|
50 | 50 | func.results(Type::tuple(vec![Type::U32, Type::U32]));
|
51 | 51 | func
|
52 | 52 | });
|
53 | 53 | interface.function({
|
54 |
| - let mut func = StandaloneFunc::new("f6"); |
| 54 | + let mut func = StandaloneFunc::new("f8"); |
55 | 55 | func.params(Params::from_iter([("a", Type::option(Type::U32))]));
|
56 | 56 | func.results(Type::result(Result_::both(Type::U32, Type::F32)));
|
57 | 57 | func
|
58 | 58 | });
|
59 | 59 | interface.function({
|
60 |
| - let mut func = StandaloneFunc::new("f7"); |
| 60 | + let mut func = StandaloneFunc::new("f9"); |
61 | 61 | func.results(Results::named(vec![("u", Type::U32), ("f", Type::F32)]));
|
62 | 62 | func
|
63 | 63 | });
|
64 | 64 | interface.function({
|
65 |
| - let mut func = StandaloneFunc::new("f8"); |
| 65 | + let mut func = StandaloneFunc::new("f10"); |
66 | 66 | func.results(Results::named(vec![("u", Type::U32)]));
|
67 | 67 | func
|
68 | 68 | });
|
69 | 69 | interface.function({
|
70 |
| - let mut func = StandaloneFunc::new("f9"); |
| 70 | + let mut func = StandaloneFunc::new("f11"); |
71 | 71 | func.results(Type::result(Result_::ok(Type::F32)));
|
72 | 72 | func
|
73 | 73 | });
|
74 | 74 | interface.function({
|
75 |
| - let mut func = StandaloneFunc::new("f10"); |
| 75 | + let mut func = StandaloneFunc::new("f12"); |
76 | 76 | func.results(Type::result(Result_::err(Type::F32)));
|
77 | 77 | func
|
78 | 78 | });
|
79 | 79 | interface.function({
|
80 |
| - let mut func = StandaloneFunc::new("f11"); |
| 80 | + let mut func = StandaloneFunc::new("f13"); |
81 | 81 | func.results(Type::result(Result_::empty()));
|
82 | 82 | func
|
83 | 83 | });
|
84 | 84 | interface
|
85 | 85 | });
|
86 | 86 |
|
87 |
| - assert_eq!(PACKAGE, package.to_string()); |
| 87 | + assert_eq!(package.to_string(), PACKAGE); |
88 | 88 | }
|
0 commit comments