subcase 0.4.0

Share parts of your test case intuitively
Documentation
use subcase::with_subcases;

with_subcases! {
    #[test]
    fn my_test_case() {
        let mut v = vec![1,2,3];

        subcase! { ~"hi"
            v.push(9);
            assert_eq!(v[3], 9);
        }
        subcase! {
            v.clear();
            assert!(v.is_empty());
            for _i in 0..4 { v.push(1); }
        }

        assert_eq!(v.len(), 4);
        assert!(v.capacity() >= 4);
    }

    #[test]
    fn my_tremendous_test_case() {
        let mut v = vec![1,2,3];

        subcase! {
            v.push(9);
        }
        subcase! {
            v.clear();
            assert!(v.is_empty());

            subcase! {
               for _i in 0..5 { v.push(1); }
               assert_eq!(v.len(), 5);
            }

            v.push(100);

            subcase! {
               v.extend_from_slice(&[4,5,6,7,8]);
            }

            assert_eq!(v.len(), 6);
            v.pop();
            v.pop();
        }

        assert_eq!(v.len(), 4);
    }

    #[test]
    #[should_panic]
    fn test_two() {
        let mut v = vec![1,2,3];

        subcase! { ~"must succeed"
            v.push(4);
            v.push(4);
        }
        subcase! {
            subcase! { ~"xxx"
                v.push(5);
                v.push(5);
            }
            subcase! { ~"must fail"
                v.push(5);
            }
        }

        assert_eq!(v.len(), 5);
    }
}