convert acceptance tests 9-10
This commit is contained in:
		
							parent
							
								
									016634fc38
								
							
						
					
					
						commit
						0066765ae5
					
				|  | @ -728,3 +728,265 @@ fn acceptance_test_8_is_empty() { | |||
|             ), | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
| fn acceptance_test_8_is_not_empty() { | ||||
|     let src = r#" | ||||
|       use aiken/builtin | ||||
| 
 | ||||
|       pub fn is_empty(bytes: ByteArray) -> Bool { | ||||
|         builtin.length_of_bytearray(bytes) == 0 | ||||
|       } | ||||
|     
 | ||||
|       test is_empty_1() { | ||||
|         is_empty(#"01") == False | ||||
|       } | ||||
|     "#;
 | ||||
| 
 | ||||
|     assert_uplc( | ||||
|         src, | ||||
|         Term::var("is_empty") | ||||
|             .lambda("is_empty") | ||||
|             .apply( | ||||
|                 Term::equals_integer() | ||||
|                     .apply(Term::length_of_bytearray().apply(Term::var("bytes"))) | ||||
|                     .apply(Term::integer(0.into())) | ||||
|                     .lambda("bytes"), | ||||
|             ) | ||||
|             .apply(Term::byte_string(vec![1])) | ||||
|             .delayed_if_else( | ||||
|                 Term::bool(false), | ||||
|                 Term::bool(false).if_else(Term::bool(false), Term::bool(true)), | ||||
|             ), | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
| fn acceptance_test_9_is_empty() { | ||||
|     let src = r#" | ||||
|       use aiken/builtin.{length_of_bytearray} | ||||
| 
 | ||||
|       pub fn is_empty(bytes: ByteArray) -> Bool { | ||||
|         length_of_bytearray(bytes) == 0 | ||||
|       } | ||||
|     
 | ||||
|       test is_empty_1() { | ||||
|         is_empty(#"") == True | ||||
|       } | ||||
|     "#;
 | ||||
| 
 | ||||
|     assert_uplc( | ||||
|         src, | ||||
|         Term::var("is_empty") | ||||
|             .lambda("is_empty") | ||||
|             .apply( | ||||
|                 Term::equals_integer() | ||||
|                     .apply(Term::length_of_bytearray().apply(Term::var("bytes"))) | ||||
|                     .apply(Term::integer(0.into())) | ||||
|                     .lambda("bytes"), | ||||
|             ) | ||||
|             .apply(Term::byte_string(vec![])) | ||||
|             .delayed_if_else( | ||||
|                 Term::bool(true), | ||||
|                 Term::bool(true).if_else(Term::bool(false), Term::bool(true)), | ||||
|             ), | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
| fn acceptance_test_10_map_none() { | ||||
|     let src = r#" | ||||
|       pub fn map(opt: Option<a>, f: fn(a) -> b) -> Option<b> { | ||||
|         when opt is { | ||||
|           None -> | ||||
|             None | ||||
|           Some(a) -> | ||||
|             Some(f(a)) | ||||
|         } | ||||
|       } | ||||
|       
 | ||||
|       fn add_one(n: Int) -> Int { | ||||
|         n + 1 | ||||
|       } | ||||
|       
 | ||||
|       test map_1() { | ||||
|         map(None, add_one) == None | ||||
|       }      
 | ||||
|     "#;
 | ||||
| 
 | ||||
|     assert_uplc( | ||||
|         src, | ||||
|         Term::equals_data() | ||||
|             .apply( | ||||
|                 Term::var("map") | ||||
|                     .lambda("map") | ||||
|                     .apply( | ||||
|                         Term::equals_integer() | ||||
|                             .apply(Term::integer(1.into())) | ||||
|                             .apply(Term::var("constr_index")) | ||||
|                             .delayed_if_else( | ||||
|                                 Term::Constant( | ||||
|                                     Constant::Data(PlutusData::Constr(Constr { | ||||
|                                         tag: 122, | ||||
|                                         any_constructor: None, | ||||
|                                         fields: vec![], | ||||
|                                     })) | ||||
|                                     .into(), | ||||
|                                 ), | ||||
|                                 Term::constr_data() | ||||
|                                     .apply(Term::integer(0.into())) | ||||
|                                     .apply( | ||||
|                                         Term::mk_cons() | ||||
|                                             .apply( | ||||
|                                                 Term::i_data() | ||||
|                                                     .apply(Term::var("f").apply(Term::var("a"))), | ||||
|                                             ) | ||||
|                                             .apply(Term::empty_list()), | ||||
|                                     ) | ||||
|                                     .lambda("a") | ||||
|                                     .apply( | ||||
|                                         Term::un_i_data().apply( | ||||
|                                             Term::head_list().apply(Term::var("constr_fields")), | ||||
|                                         ), | ||||
|                                     ) | ||||
|                                     .lambda("constr_fields") | ||||
|                                     .apply( | ||||
|                                         Term::snd_pair() | ||||
|                                             .apply(Term::unconstr_data().apply(Term::var("opt"))), | ||||
|                                     ), | ||||
|                             ) | ||||
|                             .lambda("constr_index") | ||||
|                             .apply( | ||||
|                                 Term::fst_pair() | ||||
|                                     .apply(Term::unconstr_data().apply(Term::var("opt"))), | ||||
|                             ) | ||||
|                             .lambda("f") | ||||
|                             .lambda("opt"), | ||||
|                     ) | ||||
|                     .apply(Term::Constant( | ||||
|                         Constant::Data(PlutusData::Constr(Constr { | ||||
|                             tag: 122, | ||||
|                             any_constructor: None, | ||||
|                             fields: vec![], | ||||
|                         })) | ||||
|                         .into(), | ||||
|                     )) | ||||
|                     .apply( | ||||
|                         Term::var("add_one").lambda("add_one").apply( | ||||
|                             Term::add_integer() | ||||
|                                 .apply(Term::var("n")) | ||||
|                                 .apply(Term::integer(1.into())) | ||||
|                                 .lambda("n"), | ||||
|                         ), | ||||
|                     ), | ||||
|             ) | ||||
|             .apply(Term::Constant( | ||||
|                 Constant::Data(PlutusData::Constr(Constr { | ||||
|                     tag: 122, | ||||
|                     any_constructor: None, | ||||
|                     fields: vec![], | ||||
|                 })) | ||||
|                 .into(), | ||||
|             )) | ||||
|             .constr_get_field(), | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
| fn acceptance_test_10_map_some() { | ||||
|     let src = r#" | ||||
|       pub fn map(opt: Option<a>, f: fn(a) -> b) -> Option<b> { | ||||
|         when opt is { | ||||
|           None -> | ||||
|             None | ||||
|           Some(a) -> | ||||
|             Some(f(a)) | ||||
|         } | ||||
|       } | ||||
|       
 | ||||
|       fn add_one(n: Int) -> Int { | ||||
|         n + 1 | ||||
|       } | ||||
|       
 | ||||
|       test map_1() { | ||||
|         map(Some(1), add_one) == Some(2) | ||||
|       }      
 | ||||
|     "#;
 | ||||
| 
 | ||||
|     assert_uplc( | ||||
|         src, | ||||
|         Term::equals_data() | ||||
|             .apply( | ||||
|                 Term::var("map") | ||||
|                     .lambda("map") | ||||
|                     .apply( | ||||
|                         Term::equals_integer() | ||||
|                             .apply(Term::integer(1.into())) | ||||
|                             .apply(Term::var("constr_index")) | ||||
|                             .delayed_if_else( | ||||
|                                 Term::Constant( | ||||
|                                     Constant::Data(PlutusData::Constr(Constr { | ||||
|                                         tag: 122, | ||||
|                                         any_constructor: None, | ||||
|                                         fields: vec![], | ||||
|                                     })) | ||||
|                                     .into(), | ||||
|                                 ), | ||||
|                                 Term::constr_data() | ||||
|                                     .apply(Term::integer(0.into())) | ||||
|                                     .apply( | ||||
|                                         Term::mk_cons() | ||||
|                                             .apply( | ||||
|                                                 Term::i_data() | ||||
|                                                     .apply(Term::var("f").apply(Term::var("a"))), | ||||
|                                             ) | ||||
|                                             .apply(Term::empty_list()), | ||||
|                                     ) | ||||
|                                     .lambda("a") | ||||
|                                     .apply( | ||||
|                                         Term::un_i_data().apply( | ||||
|                                             Term::head_list().apply(Term::var("constr_fields")), | ||||
|                                         ), | ||||
|                                     ) | ||||
|                                     .lambda("constr_fields") | ||||
|                                     .apply( | ||||
|                                         Term::snd_pair() | ||||
|                                             .apply(Term::unconstr_data().apply(Term::var("opt"))), | ||||
|                                     ), | ||||
|                             ) | ||||
|                             .lambda("constr_index") | ||||
|                             .apply( | ||||
|                                 Term::fst_pair() | ||||
|                                     .apply(Term::unconstr_data().apply(Term::var("opt"))), | ||||
|                             ) | ||||
|                             .lambda("f") | ||||
|                             .lambda("opt"), | ||||
|                     ) | ||||
|                     .apply(Term::Constant( | ||||
|                         Constant::Data(PlutusData::Constr(Constr { | ||||
|                             tag: 121, | ||||
|                             any_constructor: None, | ||||
|                             fields: vec![PlutusData::BigInt(BigInt::Int(1.into()))], | ||||
|                         })) | ||||
|                         .into(), | ||||
|                     )) | ||||
|                     .apply( | ||||
|                         Term::var("add_one").lambda("add_one").apply( | ||||
|                             Term::add_integer() | ||||
|                                 .apply(Term::var("n")) | ||||
|                                 .apply(Term::integer(1.into())) | ||||
|                                 .lambda("n"), | ||||
|                         ), | ||||
|                     ), | ||||
|             ) | ||||
|             .apply(Term::Constant( | ||||
|                 Constant::Data(PlutusData::Constr(Constr { | ||||
|                     tag: 121, | ||||
|                     any_constructor: None, | ||||
|                     fields: vec![PlutusData::BigInt(BigInt::Int(2.into()))], | ||||
|                 })) | ||||
|                 .into(), | ||||
|             )) | ||||
|             .constr_get_field(), | ||||
|     ); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 microproofs
						microproofs