Move tests to snapshot testing via insta
diff --git a/tests/test_grouping.rs b/tests/test_grouping.rs
index 7f362d1..df309ad 100644
--- a/tests/test_grouping.rs
+++ b/tests/test_grouping.rs
@@ -1,70 +1,34 @@
-#![recursion_limit = "1024"]
-
-#[macro_use]
-extern crate syn;
-use syn::token::Group;
-use syn::{BinOp, Expr, ExprBinary, ExprGroup, ExprLit, Lit};
-
 extern crate proc_macro2;
-use proc_macro2::*;
+extern crate syn;
 
 mod features;
 
-fn expr<T: Into<Expr>>(t: T) -> Expr {
-    t.into()
-}
+#[macro_use]
+mod macros;
 
-fn lit<T: Into<Literal>>(t: T) -> Expr {
-    Expr::Lit(ExprLit {
-        attrs: Vec::new(),
-        lit: Lit::new(t.into()),
-    })
-}
+use proc_macro2::{Delimiter, Group, Literal, Punct, Spacing, TokenStream, TokenTree};
+use syn::Expr;
+
+use std::iter::FromIterator;
 
 #[test]
 fn test_grouping() {
-    let raw: TokenStream = vec![
+    let tokens: TokenStream = TokenStream::from_iter(vec![
         TokenTree::Literal(Literal::i32_suffixed(1)),
         TokenTree::Punct(Punct::new('+', Spacing::Alone)),
-        TokenTree::Group(proc_macro2::Group::new(
+        TokenTree::Group(Group::new(
             Delimiter::None,
-            vec![
+            TokenStream::from_iter(vec![
                 TokenTree::Literal(Literal::i32_suffixed(2)),
                 TokenTree::Punct(Punct::new('+', Spacing::Alone)),
                 TokenTree::Literal(Literal::i32_suffixed(3)),
-            ]
-            .into_iter()
-            .collect(),
+            ]),
         )),
         TokenTree::Punct(Punct::new('*', Spacing::Alone)),
         TokenTree::Literal(Literal::i32_suffixed(4)),
-    ]
-    .into_iter()
-    .collect();
+    ]);
 
-    assert_eq!(raw.to_string(), "1i32 +  2i32 + 3i32  * 4i32");
+    assert_eq!(tokens.to_string(), "1i32 +  2i32 + 3i32  * 4i32");
 
-    assert_eq!(
-        syn::parse2::<syn::Expr>(raw).unwrap(),
-        expr(ExprBinary {
-            attrs: Vec::new(),
-            left: Box::new(lit(Literal::i32_suffixed(1))),
-            op: BinOp::Add(<Token![+]>::default()),
-            right: Box::new(expr(ExprBinary {
-                attrs: Vec::new(),
-                left: Box::new(expr(ExprGroup {
-                    attrs: Vec::new(),
-                    group_token: Group::default(),
-                    expr: Box::new(expr(ExprBinary {
-                        attrs: Vec::new(),
-                        left: Box::new(lit(Literal::i32_suffixed(2))),
-                        op: BinOp::Add(<Token![+]>::default()),
-                        right: Box::new(lit(Literal::i32_suffixed(3))),
-                    })),
-                })),
-                op: BinOp::Mul(<Token![*]>::default()),
-                right: Box::new(lit(Literal::i32_suffixed(4))),
-            })),
-        })
-    );
+    snapshot!(tokens as Expr);
 }