blob: 3ddcc70b8340c3b1a1d6950af944fa226600984b [file] [log] [blame]
// Copyright 2018 The proptest developers
//
// 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(never_type)]
use proptest::prelude::Arbitrary;
use proptest_derive::Arbitrary;
#[derive(Debug, Arbitrary)]
enum T1 {
V1,
}
#[derive(Debug, Arbitrary)]
enum T2 {
V1(), V2 {},
}
#[derive(Debug, Arbitrary)]
enum T3 {
V1(), V2 {}, V3,
}
#[derive(Debug, Arbitrary)]
enum T4 {
V1, V2(), V3, V4 {},
}
#[derive(Debug, Arbitrary)]
enum T5 {
V1, V2, V3, V4 {}, V5(),
}
#[derive(Debug, Arbitrary)]
enum T6 {
V1(), V2, V3 {}, V4, V5, V6,
}
#[derive(Debug, Arbitrary)]
enum T7 {
V1, V2, V3, V4 {}, V5, V6, V7(),
}
#[derive(Debug, Arbitrary)]
enum T8 {
V1, V2, V3(), V4, V5, V6{}, V7, V8,
}
#[derive(Debug, Arbitrary)]
enum T9 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9,
}
#[derive(Debug, Arbitrary)]
enum T10 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10,
}
#[derive(Debug, Arbitrary)]
enum T11 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11,
}
#[derive(Debug, Arbitrary)]
enum T12 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12,
}
#[derive(Debug, Arbitrary)]
enum T13 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13,
}
#[derive(Debug, Arbitrary)]
enum T14 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14,
}
#[derive(Debug, Arbitrary)]
enum T15 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
}
#[derive(Debug, Arbitrary)]
enum T16 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16,
}
#[derive(Debug, Arbitrary)]
enum T17 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17,
}
#[derive(Debug, Arbitrary)]
enum T18 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18,
}
#[derive(Debug, Arbitrary)]
enum T19 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18, V19
}
#[derive(Debug, Arbitrary)]
enum T20 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18, V19, V20
}
#[derive(Debug, Arbitrary)]
enum T21 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18, V19, V20, V21,
}
#[derive(Debug, Arbitrary)]
enum T22 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18, V19, V20, V21, V22,
}
#[derive(Debug, Arbitrary)]
enum T23 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18, V19, V20, V21, V22, V23,
}
#[derive(Debug, Arbitrary)]
enum T24 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18, V19, V20, V21, V22, V23, V24,
}
#[derive(Debug, Arbitrary)]
enum T25 {
V1, V2, V3, V4, V5 {}, V6(), V7, V8, V9, V10, V11, V12, V13, V14, V15,
V16, V17, V18, V19, V20, V21, V22, V23, V24, V25,
}
#[derive(Clone, Debug, Arbitrary)]
enum Alan {
A(usize),
B(String),
C(()),
D(u32),
E(f64),
F(char)
}
#[derive(Clone, Debug, Arbitrary)]
enum SameType {
A(usize),
B(usize),
}
#[test]
fn asserting_arbitrary() {
fn assert_arbitrary<T: Arbitrary>() {}
assert_arbitrary::<T1>();
assert_arbitrary::<T2>();
assert_arbitrary::<T3>();
assert_arbitrary::<T4>();
assert_arbitrary::<T5>();
assert_arbitrary::<T6>();
assert_arbitrary::<T7>();
assert_arbitrary::<T8>();
assert_arbitrary::<T9>();
assert_arbitrary::<T10>();
assert_arbitrary::<T11>();
assert_arbitrary::<T12>();
assert_arbitrary::<T13>();
assert_arbitrary::<T14>();
assert_arbitrary::<T15>();
assert_arbitrary::<T16>();
assert_arbitrary::<T17>();
assert_arbitrary::<T18>();
assert_arbitrary::<T19>();
assert_arbitrary::<T20>();
assert_arbitrary::<T21>();
assert_arbitrary::<T22>();
assert_arbitrary::<T23>();
assert_arbitrary::<T24>();
assert_arbitrary::<T25>();
assert_arbitrary::<Alan>();
assert_arbitrary::<SameType>();
}