{-# LANGUAGE CPP #-}
module Test.E.Arbitrary where
import Test.Tasty.QuickCheck
import           Test.E

-- GENERATED START

instance () => Arbitrary E2 where
    arbitrary
      = do x <- choose (0 :: Int, 1)
           case x of
               0 -> return E2_1
               1 -> return E2_2
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

instance () => Arbitrary E3 where
    arbitrary
      = do x <- choose (0 :: Int, 2)
           case x of
               0 -> return E3_1
               1 -> return E3_2
               2 -> return E3_3
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

instance () => Arbitrary E4 where
    arbitrary
      = do x <- choose (0 :: Int, 3)
           case x of
               0 -> return E4_1
               1 -> return E4_2
               2 -> return E4_3
               3 -> return E4_4
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

instance () => Arbitrary E8 where
    arbitrary
      = do x <- choose (0 :: Int, 7)
           case x of
               0 -> return E8_1
               1 -> return E8_2
               2 -> return E8_3
               3 -> return E8_4
               4 -> return E8_5
               5 -> return E8_6
               6 -> return E8_7
               7 -> return E8_8
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

instance () => Arbitrary E16 where
    arbitrary
      = do x <- choose (0 :: Int, 15)
           case x of
               0 -> return E16_1
               1 -> return E16_2
               2 -> return E16_3
               3 -> return E16_4
               4 -> return E16_5
               5 -> return E16_6
               6 -> return E16_7
               7 -> return E16_8
               8 -> return E16_9
               9 -> return E16_10
               10 -> return E16_11
               11 -> return E16_12
               12 -> return E16_13
               13 -> return E16_14
               14 -> return E16_15
               15 -> return E16_16
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

instance () => Arbitrary E17 where
    arbitrary
      = do x <- choose (0 :: Int, 16)
           case x of
               0 -> return E17_1
               1 -> return E17_2
               2 -> return E17_3
               3 -> return E17_4
               4 -> return E17_5
               5 -> return E17_6
               6 -> return E17_7
               7 -> return E17_8
               8 -> return E17_9
               9 -> return E17_10
               10 -> return E17_11
               11 -> return E17_12
               12 -> return E17_13
               13 -> return E17_14
               14 -> return E17_15
               15 -> return E17_16
               16 -> return E17_17
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

instance () => Arbitrary E32 where
    arbitrary
      = do x <- choose (0 :: Int, 31)
           case x of
               0 -> return E32_1
               1 -> return E32_2
               2 -> return E32_3
               3 -> return E32_4
               4 -> return E32_5
               5 -> return E32_6
               6 -> return E32_7
               7 -> return E32_8
               8 -> return E32_9
               9 -> return E32_10
               10 -> return E32_11
               11 -> return E32_12
               12 -> return E32_13
               13 -> return E32_14
               14 -> return E32_15
               15 -> return E32_16
               16 -> return E32_17
               17 -> return E32_18
               18 -> return E32_19
               19 -> return E32_20
               20 -> return E32_21
               21 -> return E32_22
               22 -> return E32_23
               23 -> return E32_24
               24 -> return E32_25
               25 -> return E32_26
               26 -> return E32_27
               27 -> return E32_28
               28 -> return E32_29
               29 -> return E32_30
               30 -> return E32_31
               31 -> return E32_32
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

#ifdef ENUM_LARGE
instance () => Arbitrary E256 where
    arbitrary
      = do x <- choose (0 :: Int, 255)
           case x of
               0 -> return E256_1
               1 -> return E256_2
               2 -> return E256_3
               3 -> return E256_4
               4 -> return E256_5
               5 -> return E256_6
               6 -> return E256_7
               7 -> return E256_8
               8 -> return E256_9
               9 -> return E256_10
               10 -> return E256_11
               11 -> return E256_12
               12 -> return E256_13
               13 -> return E256_14
               14 -> return E256_15
               15 -> return E256_16
               16 -> return E256_17
               17 -> return E256_18
               18 -> return E256_19
               19 -> return E256_20
               20 -> return E256_21
               21 -> return E256_22
               22 -> return E256_23
               23 -> return E256_24
               24 -> return E256_25
               25 -> return E256_26
               26 -> return E256_27
               27 -> return E256_28
               28 -> return E256_29
               29 -> return E256_30
               30 -> return E256_31
               31 -> return E256_32
               32 -> return E256_33
               33 -> return E256_34
               34 -> return E256_35
               35 -> return E256_36
               36 -> return E256_37
               37 -> return E256_38
               38 -> return E256_39
               39 -> return E256_40
               40 -> return E256_41
               41 -> return E256_42
               42 -> return E256_43
               43 -> return E256_44
               44 -> return E256_45
               45 -> return E256_46
               46 -> return E256_47
               47 -> return E256_48
               48 -> return E256_49
               49 -> return E256_50
               50 -> return E256_51
               51 -> return E256_52
               52 -> return E256_53
               53 -> return E256_54
               54 -> return E256_55
               55 -> return E256_56
               56 -> return E256_57
               57 -> return E256_58
               58 -> return E256_59
               59 -> return E256_60
               60 -> return E256_61
               61 -> return E256_62
               62 -> return E256_63
               63 -> return E256_64
               64 -> return E256_65
               65 -> return E256_66
               66 -> return E256_67
               67 -> return E256_68
               68 -> return E256_69
               69 -> return E256_70
               70 -> return E256_71
               71 -> return E256_72
               72 -> return E256_73
               73 -> return E256_74
               74 -> return E256_75
               75 -> return E256_76
               76 -> return E256_77
               77 -> return E256_78
               78 -> return E256_79
               79 -> return E256_80
               80 -> return E256_81
               81 -> return E256_82
               82 -> return E256_83
               83 -> return E256_84
               84 -> return E256_85
               85 -> return E256_86
               86 -> return E256_87
               87 -> return E256_88
               88 -> return E256_89
               89 -> return E256_90
               90 -> return E256_91
               91 -> return E256_92
               92 -> return E256_93
               93 -> return E256_94
               94 -> return E256_95
               95 -> return E256_96
               96 -> return E256_97
               97 -> return E256_98
               98 -> return E256_99
               99 -> return E256_100
               100 -> return E256_101
               101 -> return E256_102
               102 -> return E256_103
               103 -> return E256_104
               104 -> return E256_105
               105 -> return E256_106
               106 -> return E256_107
               107 -> return E256_108
               108 -> return E256_109
               109 -> return E256_110
               110 -> return E256_111
               111 -> return E256_112
               112 -> return E256_113
               113 -> return E256_114
               114 -> return E256_115
               115 -> return E256_116
               116 -> return E256_117
               117 -> return E256_118
               118 -> return E256_119
               119 -> return E256_120
               120 -> return E256_121
               121 -> return E256_122
               122 -> return E256_123
               123 -> return E256_124
               124 -> return E256_125
               125 -> return E256_126
               126 -> return E256_127
               127 -> return E256_128
               128 -> return E256_129
               129 -> return E256_130
               130 -> return E256_131
               131 -> return E256_132
               132 -> return E256_133
               133 -> return E256_134
               134 -> return E256_135
               135 -> return E256_136
               136 -> return E256_137
               137 -> return E256_138
               138 -> return E256_139
               139 -> return E256_140
               140 -> return E256_141
               141 -> return E256_142
               142 -> return E256_143
               143 -> return E256_144
               144 -> return E256_145
               145 -> return E256_146
               146 -> return E256_147
               147 -> return E256_148
               148 -> return E256_149
               149 -> return E256_150
               150 -> return E256_151
               151 -> return E256_152
               152 -> return E256_153
               153 -> return E256_154
               154 -> return E256_155
               155 -> return E256_156
               156 -> return E256_157
               157 -> return E256_158
               158 -> return E256_159
               159 -> return E256_160
               160 -> return E256_161
               161 -> return E256_162
               162 -> return E256_163
               163 -> return E256_164
               164 -> return E256_165
               165 -> return E256_166
               166 -> return E256_167
               167 -> return E256_168
               168 -> return E256_169
               169 -> return E256_170
               170 -> return E256_171
               171 -> return E256_172
               172 -> return E256_173
               173 -> return E256_174
               174 -> return E256_175
               175 -> return E256_176
               176 -> return E256_177
               177 -> return E256_178
               178 -> return E256_179
               179 -> return E256_180
               180 -> return E256_181
               181 -> return E256_182
               182 -> return E256_183
               183 -> return E256_184
               184 -> return E256_185
               185 -> return E256_186
               186 -> return E256_187
               187 -> return E256_188
               188 -> return E256_189
               189 -> return E256_190
               190 -> return E256_191
               191 -> return E256_192
               192 -> return E256_193
               193 -> return E256_194
               194 -> return E256_195
               195 -> return E256_196
               196 -> return E256_197
               197 -> return E256_198
               198 -> return E256_199
               199 -> return E256_200
               200 -> return E256_201
               201 -> return E256_202
               202 -> return E256_203
               203 -> return E256_204
               204 -> return E256_205
               205 -> return E256_206
               206 -> return E256_207
               207 -> return E256_208
               208 -> return E256_209
               209 -> return E256_210
               210 -> return E256_211
               211 -> return E256_212
               212 -> return E256_213
               213 -> return E256_214
               214 -> return E256_215
               215 -> return E256_216
               216 -> return E256_217
               217 -> return E256_218
               218 -> return E256_219
               219 -> return E256_220
               220 -> return E256_221
               221 -> return E256_222
               222 -> return E256_223
               223 -> return E256_224
               224 -> return E256_225
               225 -> return E256_226
               226 -> return E256_227
               227 -> return E256_228
               228 -> return E256_229
               229 -> return E256_230
               230 -> return E256_231
               231 -> return E256_232
               232 -> return E256_233
               233 -> return E256_234
               234 -> return E256_235
               235 -> return E256_236
               236 -> return E256_237
               237 -> return E256_238
               238 -> return E256_239
               239 -> return E256_240
               240 -> return E256_241
               241 -> return E256_242
               242 -> return E256_243
               243 -> return E256_244
               244 -> return E256_245
               245 -> return E256_246
               246 -> return E256_247
               247 -> return E256_248
               248 -> return E256_249
               249 -> return E256_250
               250 -> return E256_251
               251 -> return E256_252
               252 -> return E256_253
               253 -> return E256_254
               254 -> return E256_255
               255 -> return E256_256
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"

instance () => Arbitrary E258 where
    arbitrary
      = do x <- choose (0 :: Int, 257)
           case x of
               0 -> return E258_1
               1 -> return E258_2
               2 -> return E258_3
               3 -> return E258_4
               4 -> return E258_5
               5 -> return E258_6
               6 -> return E258_7
               7 -> return E258_8
               8 -> return E258_9
               9 -> return E258_10
               10 -> return E258_11
               11 -> return E258_12
               12 -> return E258_13
               13 -> return E258_14
               14 -> return E258_15
               15 -> return E258_16
               16 -> return E258_17
               17 -> return E258_18
               18 -> return E258_19
               19 -> return E258_20
               20 -> return E258_21
               21 -> return E258_22
               22 -> return E258_23
               23 -> return E258_24
               24 -> return E258_25
               25 -> return E258_26
               26 -> return E258_27
               27 -> return E258_28
               28 -> return E258_29
               29 -> return E258_30
               30 -> return E258_31
               31 -> return E258_32
               32 -> return E258_33
               33 -> return E258_34
               34 -> return E258_35
               35 -> return E258_36
               36 -> return E258_37
               37 -> return E258_38
               38 -> return E258_39
               39 -> return E258_40
               40 -> return E258_41
               41 -> return E258_42
               42 -> return E258_43
               43 -> return E258_44
               44 -> return E258_45
               45 -> return E258_46
               46 -> return E258_47
               47 -> return E258_48
               48 -> return E258_49
               49 -> return E258_50
               50 -> return E258_51
               51 -> return E258_52
               52 -> return E258_53
               53 -> return E258_54
               54 -> return E258_55
               55 -> return E258_56
               56 -> return E258_57
               57 -> return E258_58
               58 -> return E258_59
               59 -> return E258_60
               60 -> return E258_61
               61 -> return E258_62
               62 -> return E258_63
               63 -> return E258_64
               64 -> return E258_65
               65 -> return E258_66
               66 -> return E258_67
               67 -> return E258_68
               68 -> return E258_69
               69 -> return E258_70
               70 -> return E258_71
               71 -> return E258_72
               72 -> return E258_73
               73 -> return E258_74
               74 -> return E258_75
               75 -> return E258_76
               76 -> return E258_77
               77 -> return E258_78
               78 -> return E258_79
               79 -> return E258_80
               80 -> return E258_81
               81 -> return E258_82
               82 -> return E258_83
               83 -> return E258_84
               84 -> return E258_85
               85 -> return E258_86
               86 -> return E258_87
               87 -> return E258_88
               88 -> return E258_89
               89 -> return E258_90
               90 -> return E258_91
               91 -> return E258_92
               92 -> return E258_93
               93 -> return E258_94
               94 -> return E258_95
               95 -> return E258_96
               96 -> return E258_97
               97 -> return E258_98
               98 -> return E258_99
               99 -> return E258_100
               100 -> return E258_101
               101 -> return E258_102
               102 -> return E258_103
               103 -> return E258_104
               104 -> return E258_105
               105 -> return E258_106
               106 -> return E258_107
               107 -> return E258_108
               108 -> return E258_109
               109 -> return E258_110
               110 -> return E258_111
               111 -> return E258_112
               112 -> return E258_113
               113 -> return E258_114
               114 -> return E258_115
               115 -> return E258_116
               116 -> return E258_117
               117 -> return E258_118
               118 -> return E258_119
               119 -> return E258_120
               120 -> return E258_121
               121 -> return E258_122
               122 -> return E258_123
               123 -> return E258_124
               124 -> return E258_125
               125 -> return E258_126
               126 -> return E258_127
               127 -> return E258_128
               128 -> return E258_129
               129 -> return E258_130
               130 -> return E258_131
               131 -> return E258_132
               132 -> return E258_133
               133 -> return E258_134
               134 -> return E258_135
               135 -> return E258_136
               136 -> return E258_137
               137 -> return E258_138
               138 -> return E258_139
               139 -> return E258_140
               140 -> return E258_141
               141 -> return E258_142
               142 -> return E258_143
               143 -> return E258_144
               144 -> return E258_145
               145 -> return E258_146
               146 -> return E258_147
               147 -> return E258_148
               148 -> return E258_149
               149 -> return E258_150
               150 -> return E258_151
               151 -> return E258_152
               152 -> return E258_153
               153 -> return E258_154
               154 -> return E258_155
               155 -> return E258_156
               156 -> return E258_157
               157 -> return E258_158
               158 -> return E258_159
               159 -> return E258_160
               160 -> return E258_161
               161 -> return E258_162
               162 -> return E258_163
               163 -> return E258_164
               164 -> return E258_165
               165 -> return E258_166
               166 -> return E258_167
               167 -> return E258_168
               168 -> return E258_169
               169 -> return E258_170
               170 -> return E258_171
               171 -> return E258_172
               172 -> return E258_173
               173 -> return E258_174
               174 -> return E258_175
               175 -> return E258_176
               176 -> return E258_177
               177 -> return E258_178
               178 -> return E258_179
               179 -> return E258_180
               180 -> return E258_181
               181 -> return E258_182
               182 -> return E258_183
               183 -> return E258_184
               184 -> return E258_185
               185 -> return E258_186
               186 -> return E258_187
               187 -> return E258_188
               188 -> return E258_189
               189 -> return E258_190
               190 -> return E258_191
               191 -> return E258_192
               192 -> return E258_193
               193 -> return E258_194
               194 -> return E258_195
               195 -> return E258_196
               196 -> return E258_197
               197 -> return E258_198
               198 -> return E258_199
               199 -> return E258_200
               200 -> return E258_201
               201 -> return E258_202
               202 -> return E258_203
               203 -> return E258_204
               204 -> return E258_205
               205 -> return E258_206
               206 -> return E258_207
               207 -> return E258_208
               208 -> return E258_209
               209 -> return E258_210
               210 -> return E258_211
               211 -> return E258_212
               212 -> return E258_213
               213 -> return E258_214
               214 -> return E258_215
               215 -> return E258_216
               216 -> return E258_217
               217 -> return E258_218
               218 -> return E258_219
               219 -> return E258_220
               220 -> return E258_221
               221 -> return E258_222
               222 -> return E258_223
               223 -> return E258_224
               224 -> return E258_225
               225 -> return E258_226
               226 -> return E258_227
               227 -> return E258_228
               228 -> return E258_229
               229 -> return E258_230
               230 -> return E258_231
               231 -> return E258_232
               232 -> return E258_233
               233 -> return E258_234
               234 -> return E258_235
               235 -> return E258_236
               236 -> return E258_237
               237 -> return E258_238
               238 -> return E258_239
               239 -> return E258_240
               240 -> return E258_241
               241 -> return E258_242
               242 -> return E258_243
               243 -> return E258_244
               244 -> return E258_245
               245 -> return E258_246
               246 -> return E258_247
               247 -> return E258_248
               248 -> return E258_249
               249 -> return E258_250
               250 -> return E258_251
               251 -> return E258_252
               252 -> return E258_253
               253 -> return E258_254
               254 -> return E258_255
               255 -> return E258_256
               256 -> return E258_257
               257 -> return E258_258
               _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
-- GENERATED STOP
#endif