test: add empty list test
This commit is contained in:
parent
291dedf4e8
commit
8a7df7f66b
|
@ -27,3 +27,16 @@ pub fn parser(
|
||||||
tail,
|
tail,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
|
||||||
|
use chumsky::Parser;
|
||||||
|
|
||||||
|
use crate::assert_expr;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn empty_list() {
|
||||||
|
assert_expr!("[]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
source: crates/aiken-lang/src/parser/expr/list.rs
|
||||||
|
description: "Code:\n\n[]"
|
||||||
|
---
|
||||||
|
List {
|
||||||
|
location: 0..2,
|
||||||
|
elements: [],
|
||||||
|
tail: None,
|
||||||
|
}
|
|
@ -93,3 +93,26 @@ pub fn type_name_with_args() -> impl Parser<Token, (String, Option<Vec<String>>)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
#[macro_use]
|
||||||
|
mod macros {
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! assert_expr {
|
||||||
|
($code:expr) => {
|
||||||
|
let $crate::parser::lexer::LexInfo { tokens, .. } = $crate::parser::lexer::run($code).unwrap();
|
||||||
|
|
||||||
|
let stream = chumsky::Stream::from_iter($crate::ast::Span::create(tokens.len()), tokens.into_iter());
|
||||||
|
|
||||||
|
let result = $crate::parser::expr::sequence().parse(stream).unwrap();
|
||||||
|
|
||||||
|
insta::with_settings!({
|
||||||
|
description => concat!("Code:\n\n", $code),
|
||||||
|
prepend_module_to_snapshot => false,
|
||||||
|
omit_expression => true
|
||||||
|
}, {
|
||||||
|
insta::assert_debug_snapshot!(result);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -168,7 +168,7 @@ fn qualify_type_name(module: &String, typ_name: &str) -> Document<'static> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod tests {
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
|
@ -140,7 +140,7 @@ impl From<&Config> for Preamble {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use aiken_lang::builtins;
|
use aiken_lang::builtins;
|
||||||
use schema::{Data, Declaration, Items, Schema};
|
use schema::{Data, Declaration, Items, Schema};
|
||||||
|
|
|
@ -1033,7 +1033,7 @@ Here's the types I followed and that led me to this problem:
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
pub mod test {
|
pub mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use proptest::prelude::*;
|
use proptest::prelude::*;
|
||||||
use serde_json::{self, json, Value};
|
use serde_json::{self, json, Value};
|
||||||
|
|
|
@ -177,7 +177,7 @@ impl Validator {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod tests {
|
||||||
use assert_json_diff::assert_json_eq;
|
use assert_json_diff::assert_json_eq;
|
||||||
|
|
||||||
use serde_json::{self, json};
|
use serde_json::{self, json};
|
||||||
|
|
|
@ -1,126 +1,123 @@
|
||||||
#[cfg(test)]
|
use flat_rs::filler::Filler;
|
||||||
mod test {
|
use flat_rs::{decode, encode};
|
||||||
use flat_rs::filler::Filler;
|
use proptest::prelude::*;
|
||||||
use flat_rs::{decode, encode};
|
|
||||||
use proptest::prelude::*;
|
|
||||||
|
|
||||||
prop_compose! {
|
prop_compose! {
|
||||||
fn arb_big_vec()(size in 255..300, element in any::<u8>()) -> Vec<u8> {
|
fn arb_big_vec()(size in 255..300, element in any::<u8>()) -> Vec<u8> {
|
||||||
(0..size).map(|_| element).collect()
|
(0..size).map(|_| element).collect()
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_bool() {
|
|
||||||
let bytes = encode(&true).unwrap();
|
|
||||||
|
|
||||||
assert_eq!(bytes, vec![0b10000001]);
|
|
||||||
|
|
||||||
let decoded: bool = decode(bytes.as_slice()).unwrap();
|
|
||||||
|
|
||||||
assert!(decoded);
|
|
||||||
|
|
||||||
let bytes = encode(&false).unwrap();
|
|
||||||
|
|
||||||
assert_eq!(bytes, vec![0b00000001]);
|
|
||||||
|
|
||||||
let decoded: bool = decode(bytes.as_slice()).unwrap();
|
|
||||||
|
|
||||||
assert!(!decoded);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_u8() {
|
|
||||||
let bytes = encode(&3_u8).unwrap();
|
|
||||||
|
|
||||||
assert_eq!(bytes, vec![0b00000011, 0b00000001]);
|
|
||||||
|
|
||||||
let decoded: u8 = decode(bytes.as_slice()).unwrap();
|
|
||||||
|
|
||||||
assert_eq!(decoded, 3_u8);
|
|
||||||
}
|
|
||||||
|
|
||||||
proptest! {
|
|
||||||
#[test]
|
|
||||||
fn encode_isize(x: isize) {
|
|
||||||
let bytes = encode(&x).unwrap();
|
|
||||||
let decoded: isize = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, x);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_usize(x: usize) {
|
|
||||||
let bytes = encode(&x).unwrap();
|
|
||||||
let decoded: usize = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, x);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_char(c: char) {
|
|
||||||
let bytes = encode(&c).unwrap();
|
|
||||||
let decoded: char = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, c);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_string(str: String) {
|
|
||||||
let bytes = encode(&str).unwrap();
|
|
||||||
let decoded: String = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, str);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_vec_u8(xs: Vec<u8>) {
|
|
||||||
let bytes = encode(&xs).unwrap();
|
|
||||||
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, xs);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_big_vec_u8(xs in arb_big_vec()) {
|
|
||||||
let bytes = encode(&xs).unwrap();
|
|
||||||
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, xs);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_arr_u8(xs: Vec<u8>) {
|
|
||||||
let bytes = encode(&xs.as_slice()).unwrap();
|
|
||||||
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, xs);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_big_arr_u8(xs in arb_big_vec()) {
|
|
||||||
let bytes = encode(&xs.as_slice()).unwrap();
|
|
||||||
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, xs);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_boxed(c: char) {
|
|
||||||
let boxed = Box::new(c);
|
|
||||||
let bytes = encode(&boxed).unwrap();
|
|
||||||
let decoded: char = decode(&bytes).unwrap();
|
|
||||||
assert_eq!(decoded, c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn encode_filler() {
|
|
||||||
let bytes = encode(&Filler::FillerEnd).unwrap();
|
|
||||||
|
|
||||||
assert_eq!(bytes, vec![0b0000001, 0b00000001]);
|
|
||||||
|
|
||||||
let bytes = encode(&Filler::FillerStart(Box::new(Filler::FillerEnd))).unwrap();
|
|
||||||
|
|
||||||
assert_eq!(bytes, vec![0b0000001, 0b00000001]);
|
|
||||||
|
|
||||||
let bytes = encode(&Filler::FillerStart(Box::new(Filler::FillerStart(
|
|
||||||
Box::new(Filler::FillerEnd),
|
|
||||||
))))
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
assert_eq!(bytes, vec![0b0000001, 0b00000001]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_bool() {
|
||||||
|
let bytes = encode(&true).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(bytes, vec![0b10000001]);
|
||||||
|
|
||||||
|
let decoded: bool = decode(bytes.as_slice()).unwrap();
|
||||||
|
|
||||||
|
assert!(decoded);
|
||||||
|
|
||||||
|
let bytes = encode(&false).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(bytes, vec![0b00000001]);
|
||||||
|
|
||||||
|
let decoded: bool = decode(bytes.as_slice()).unwrap();
|
||||||
|
|
||||||
|
assert!(!decoded);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_u8() {
|
||||||
|
let bytes = encode(&3_u8).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(bytes, vec![0b00000011, 0b00000001]);
|
||||||
|
|
||||||
|
let decoded: u8 = decode(bytes.as_slice()).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(decoded, 3_u8);
|
||||||
|
}
|
||||||
|
|
||||||
|
proptest! {
|
||||||
|
#[test]
|
||||||
|
fn encode_isize(x: isize) {
|
||||||
|
let bytes = encode(&x).unwrap();
|
||||||
|
let decoded: isize = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_usize(x: usize) {
|
||||||
|
let bytes = encode(&x).unwrap();
|
||||||
|
let decoded: usize = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_char(c: char) {
|
||||||
|
let bytes = encode(&c).unwrap();
|
||||||
|
let decoded: char = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_string(str: String) {
|
||||||
|
let bytes = encode(&str).unwrap();
|
||||||
|
let decoded: String = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, str);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_vec_u8(xs: Vec<u8>) {
|
||||||
|
let bytes = encode(&xs).unwrap();
|
||||||
|
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_big_vec_u8(xs in arb_big_vec()) {
|
||||||
|
let bytes = encode(&xs).unwrap();
|
||||||
|
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_arr_u8(xs: Vec<u8>) {
|
||||||
|
let bytes = encode(&xs.as_slice()).unwrap();
|
||||||
|
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_big_arr_u8(xs in arb_big_vec()) {
|
||||||
|
let bytes = encode(&xs.as_slice()).unwrap();
|
||||||
|
let decoded: Vec<u8> = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_boxed(c: char) {
|
||||||
|
let boxed = Box::new(c);
|
||||||
|
let bytes = encode(&boxed).unwrap();
|
||||||
|
let decoded: char = decode(&bytes).unwrap();
|
||||||
|
assert_eq!(decoded, c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encode_filler() {
|
||||||
|
let bytes = encode(&Filler::FillerEnd).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(bytes, vec![0b0000001, 0b00000001]);
|
||||||
|
|
||||||
|
let bytes = encode(&Filler::FillerStart(Box::new(Filler::FillerEnd))).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(bytes, vec![0b0000001, 0b00000001]);
|
||||||
|
|
||||||
|
let bytes = encode(&Filler::FillerStart(Box::new(Filler::FillerStart(
|
||||||
|
Box::new(Filler::FillerEnd),
|
||||||
|
))))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
assert_eq!(bytes, vec![0b0000001, 0b00000001]);
|
||||||
|
}
|
||||||
|
|
|
@ -1,21 +1,18 @@
|
||||||
#[cfg(test)]
|
use flat_rs::zigzag::{to_isize, to_usize};
|
||||||
mod test {
|
use proptest::prelude::*;
|
||||||
use flat_rs::zigzag::{to_isize, to_usize};
|
|
||||||
use proptest::prelude::*;
|
|
||||||
|
|
||||||
proptest! {
|
proptest! {
|
||||||
#[test]
|
#[test]
|
||||||
fn zigzag(i: isize) {
|
fn zigzag(i: isize) {
|
||||||
let u = to_usize(i);
|
let u = to_usize(i);
|
||||||
let converted_i = to_isize(u);
|
let converted_i = to_isize(u);
|
||||||
assert_eq!(converted_i, i);
|
assert_eq!(converted_i, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn zagzig(u: usize) {
|
fn zagzig(u: usize) {
|
||||||
let i = to_isize(u);
|
let i = to_isize(u);
|
||||||
let converted_u = to_usize(i);
|
let converted_u = to_usize(i);
|
||||||
assert_eq!(converted_u, u);
|
assert_eq!(converted_u, u);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -808,7 +808,7 @@ pub fn decode_constant_tag(d: &mut Decoder) -> Result<u8, de::Error> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod tests {
|
||||||
use super::{Constant, Program, Term};
|
use super::{Constant, Program, Term};
|
||||||
use crate::{
|
use crate::{
|
||||||
ast::{DeBruijn, Name, Type},
|
ast::{DeBruijn, Name, Type},
|
||||||
|
|
|
@ -3213,7 +3213,7 @@ impl TryFrom<u8> for StepKind {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
|
|
@ -503,7 +503,7 @@ fn replace_identity_usage(term: &Term<Name>, original: Rc<Name>) -> Term<Name> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod tests {
|
||||||
|
|
||||||
use pallas_primitives::babbage::{BigInt, PlutusData};
|
use pallas_primitives::babbage::{BigInt, PlutusData};
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
|
@ -282,7 +282,7 @@ peg::parser! {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod tests {
|
||||||
use num_bigint::BigInt;
|
use num_bigint::BigInt;
|
||||||
|
|
||||||
use crate::ast::{Constant, Name, Program, Term, Type, Unique};
|
use crate::ast::{Constant, Name, Program, Term, Type, Unique};
|
||||||
|
|
Loading…
Reference in New Issue