Browse Source

Add test case for which `syn` currently fails

Łukasz Jan Niemier 8 years ago
parent
commit
43cfa25426
3 changed files with 34 additions and 2 deletions
  1. 0 1
      macros/src/lib.rs
  2. 1 1
      macros/tests/trivial.rs
  3. 33 0
      macros/tests/with_custom_values.rs

+ 0 - 1
macros/src/lib.rs

@@ -25,7 +25,6 @@ pub fn from_primitive(input: TokenStream) -> TokenStream {
     let source = input.to_string();
 
     let ast = syn::parse_item(&source).unwrap();
-    // panic!("{:?}", ast);
 
 macro_rules! pathvec_std {
     ($cx:expr, $first:ident :: $($rest:ident)::+) => ({

+ 1 - 1
macros/tests/test_macro.rs → macros/tests/trivial.rs

@@ -22,7 +22,7 @@ enum Color {
 }
 
 #[test]
-fn test_from_primitive() {
+fn test_from_primitive_for_trivial_case() {
     let v: [Option<Color>; 4] = [num::FromPrimitive::from_u64(0),
                                  num::FromPrimitive::from_u64(1),
                                  num::FromPrimitive::from_u64(2),

+ 33 - 0
macros/tests/with_custom_values.rs

@@ -0,0 +1,33 @@
+// Copyright 2013-2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![feature(rustc_macro)]
+
+extern crate num;
+#[macro_use]
+extern crate num_macros;
+
+#[derive(Debug, PartialEq, FromPrimitive)]
+enum Color {
+    Red,
+    Blue = 5,
+    Green,
+}
+
+#[test]
+fn test_from_primitive_for_enum_with_custom_value() {
+    let v: [Option<Color>; 4] = [num::FromPrimitive::from_u64(0),
+                                 num::FromPrimitive::from_u64(5),
+                                 num::FromPrimitive::from_u64(6),
+                                 num::FromPrimitive::from_u64(3)];
+
+    assert_eq!(v,
+               [Some(Color::Red), Some(Color::Blue), Some(Color::Green), None]);
+}