From 2aa4c5bfc6e35ca663aa77899975450e6a4a26de Mon Sep 17 00:00:00 2001 From: Laurenz Date: Wed, 13 Jan 2021 17:03:10 +0100 Subject: [PATCH] =?UTF-8?q?Move=20array=20and=20dictionary=20tests=20to=20?= =?UTF-8?q?integration=20=F0=9F=9A=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/parse/tests.rs | 91 ------------------------------------- tests/ref/arrays.png | Bin 0 -> 3945 bytes tests/ref/dictionaries.png | Bin 0 -> 2183 bytes tests/typ/arrays.typ | 37 +++++++++++++++ tests/typ/dictionaries.typ | 18 ++++++++ 5 files changed, 55 insertions(+), 91 deletions(-) create mode 100644 tests/ref/arrays.png create mode 100644 tests/ref/dictionaries.png create mode 100644 tests/typ/arrays.typ create mode 100644 tests/typ/dictionaries.typ diff --git a/src/parse/tests.rs b/src/parse/tests.rs index a8e9dc256..bb102476d 100644 --- a/src/parse/tests.rs +++ b/src/parse/tests.rs @@ -168,18 +168,6 @@ macro_rules! Array { }; } -macro_rules! Dict { - (@$($name:expr => $expr:expr),* $(,)?) => { - vec![$(Named { - name: into!($name).map(|s: &str| Ident(s.into())), - expr: into!($expr) - }),*] - }; - ($($tts:tt)*) => { - Expr::Dict(Dict![@$($tts)*]) - }; -} - macro_rules! Template { (@$($node:expr),* $(,)?) => { vec![$(into!($node)),*] @@ -395,85 +383,6 @@ fn test_parse_arguments() { errors: [S(3..6, "expected identifier")]); } -#[test] -fn test_parse_arrays() { - // Empty array. - t!("{()}" Block!(Array![])); - - // Array with one item and trailing comma + spans. - t!("{-(1,)}" - nodes: [S(0..7, Block!(Unary( - S(1..2, Neg), - S(2..6, Array![S(3..4, Int(1))]) - )))], - spans: true); - - // Array with three items and trailing comma. - t!(r#"{("one", 2, #003,)}"# Block!(Array![ - Str("one"), - Int(2), - Color(RgbaColor::new(0, 0, 0x33, 0xff)) - ])); - - // Unclosed. - t!("{(}" - nodes: [Block!(Array![])], - errors: [S(2..2, "expected closing paren")]); - - // Missing comma + invalid token. - t!("{(1*/2)}" - nodes: [Block!(Array![Int(1), Int(2)])], - errors: [S(3..5, "expected expression, found end of block comment"), - S(3..3, "expected comma")]); - - // Invalid token. - t!("{(1, 1u 2)}" - nodes: [Block!(Array![Int(1), Int(2)])], - errors: [S(5..7, "expected expression, found invalid token")]); - - // Coerced to expression with leading comma. - t!("{(,1)}" - nodes: [Block!(Group(Int(1)))], - errors: [S(2..3, "expected expression, found comma")]); - - // Missing expression after name makes this an array. - t!("{(a:)}" - nodes: [Block!(Array![])], - errors: [S(4..4, "expected expression")]); - - // Expected expression, found named pair. - t!("{(1, b: 2)}" - nodes: [Block!(Array![Int(1)])], - errors: [S(5..9, "expected expression, found named pair")]); -} - -#[test] -fn test_parse_dictionaries() { - // Empty dictionary. - t!("{(:)}" Block!(Dict![])); - - // Dictionary with two pairs + spans. - t!("{(one: 1, two: 2)}" - nodes: [S(0..18, Block!(Dict![ - S(2..5, "one") => S(7..8, Int(1)), - S(10..13, "two") => S(15..16, Int(2)), - ]))], - spans: true); - - // Expected named pair, found expression. - t!("{(a: 1, b)}" - nodes: [Block!(Dict!["a" => Int(1)])], - errors: [S(8..9, "expected named pair, found expression")]); - - // Dictionary marker followed by more stuff. - t!("{(:1 b:[], true::)}" - nodes: [Block!(Dict!["b" => Template![]])], - errors: [S(3..4, "expected named pair, found expression"), - S(4..4, "expected comma"), - S(11..15, "expected identifier"), - S(16..17, "expected expression, found colon")]); -} - #[test] fn test_parse_expressions() { // Parentheses. diff --git a/tests/ref/arrays.png b/tests/ref/arrays.png new file mode 100644 index 0000000000000000000000000000000000000000..4a95278c00389d15669cd97ff2dd244f640653bc GIT binary patch literal 3945 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 literal 0 HcmV?d00001 diff --git a/tests/ref/dictionaries.png b/tests/ref/dictionaries.png new file mode 100644 index 0000000000000000000000000000000000000000..a34b45e0755200b68f2a92af03a048518ee66243 GIT binary patch literal 2183 zcmd5;dpOhy7ygYIb{b-aSR^uqT-VklgOEmUjqD(8nxc9L<5C!m+ps?kVP@KV#$p%A zrLk^nYbKXimng<15+*Td#pIq#gYoJ4{_5NB+rRgD&N+Xa_c{NZ=e+NGQe2$v_99df z008WDu*VSq00P@hF?_cHT=DL%&>BOt4(u&?|pYhQ_RZWV@x-DyrK8j=3c)OwQM~rtKK1arw~z zG{%!E_Jt&CrPJ(CR6MjQRmv+m5)aw~;lBekkrwJ%RJBa!^^1fvt4AcJbe)ibHk73i z{2}E#5Yr$r`#M*--M!jesd#ny6_QGB$JhUFH<<6-Rn3>^b~kL)C7 zarvR``)67VKmwi^Jm_>ZE25s9eKbkCQLmYB8iv9lPkmVgsVF1Xf+)MmQ>>4Cp%=>n zdOz$SKsR3b_dncvGp4kbAuQwp@5Z)$;spWcxYGwoBTvfLH8=)(Yo|GESsvwA zX>8013Ffp?z^S~KA_j6KFyS}4*eQ>~i&DZ`l8#t0+6BUo9+Bo^gZ|BS4uAiF*&HL5 zkg*Zf@RCStq2zWFik)kA9FlHXR8B5G+N1YbwQ{VEdVoM~l4#VMU9 zVI7n4eK;wC8ZZH<9YWtuX!Kmwu(}5f@*)nMUEPCapKVNsJ-G0w2-62(XKjWn5Urbz zw>`lhIX7SY$Od$ByhQddXaqLo58@i5u2)Uwl7*b; z9*C8LuxneBjErn)mN%5MD|8|*tzuyA*28pbRxo-POW^dPrT*GB^tU;g@UCQ(c+h!||uhEace? zw|$EJrMH|tPieSZDY?Pk=Bt7Ii_tXKR=xYWC*Zkgle$vTdX&w{WOEoX+2xagLnVUJF1j$8YoGT;fPOi#c(x zv~SHXUEIDBVI0EV`Dh37E3=h+(J?}Xrqd^LWTxuh5cu!u{m(%wsb2pPCFMrhexJYc z_X|3Ut>F00x<9!jC3>%&m>8NdTTcRupT0(H^DX6pxtdYL3eqt*ez=R;yFE{i3Ianj zqRW|~$Iw+lnQ6Twnpiy4Dwc7f-$O99LErsyD@YSw?{Ij|;7uvnn_OGKx$hfAh%#k3 zFM$w9J&obOt>Yd$c*{1^qN-){r-W`eT$hxP2?2d&MaAk?h z*j^eshkZpradC2C!sOX7x(qKv$AzKM)x;(qm3URP_Rg>C-okf=iV%Co2gLjwhn2Y4 zk>IdH3TU|mb8hUE)U@KCQI)%B``^m9ySb;T5bmY?#<;Z$1(zyc(}k-PNqP@?z)YBS z^Ir#JDal#aJUIiaW>nEIeaPo$6OVW5%^yD)N;32224ZEKi{EL2zWScoKQIfUkp)CU z#RT%nuwyLFr00(QE-)Fr4^k>D$njG^l}U%(S#yOI>kK%Z&Z1$? z=698Qii_j8f!;n{DY@CMkoP0=uApz(L{3er#hXrOF!IIhb9T=3!Kvs7?9@io9QSfO zj5&Dje7~76a_;S2R9HBXGZ0RM3VroM^O6?FB`@C!T=}22^2J&H#dQ90sNgtKrp5Sk cOq!r4;;CuV