blob: ba4403c8fa41c4cdd3226d1628c41b203a7f1716 [file] [log] [blame] [edit]
// 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),
}
#[derive(Arbitrary, Debug)]
enum OneTwo {
One(u8),
Two(u8, u8),
}
#[derive(Arbitrary, Debug)]
enum ZeroOneTwo {
Zero,
One(u8),
Two(u8, u8),
}
#[derive(Arbitrary, Debug)]
enum Nested {
First(SameType),
Second(ZeroOneTwo, OneTwo)
}
#[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>();
assert_arbitrary::<OneTwo>();
assert_arbitrary::<ZeroOneTwo>();
assert_arbitrary::<Nested>();
}