mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 15:21:12 +00:00
Merge test_dev, test_wasm, and test_wasm_util into test_gen
This commit is contained in:
parent
cba0f07992
commit
360974398a
32 changed files with 2417 additions and 6571 deletions
|
@ -1,63 +1,34 @@
|
|||
#![cfg(test)]
|
||||
#![cfg(feature = "gen-llvm")]
|
||||
|
||||
#[cfg(feature = "gen-llvm")]
|
||||
use crate::helpers::llvm::assert_evals_to;
|
||||
|
||||
// #[cfg(feature = "gen-dev")]
|
||||
// use crate::helpers::dev::assert_evals_to;
|
||||
|
||||
// #[cfg(feature = "gen-wasm")]
|
||||
// use crate::helpers::wasm::assert_evals_to;
|
||||
|
||||
use crate::assert_evals_to;
|
||||
use crate::helpers::with_larger_debug_stack;
|
||||
//use crate::assert_wasm_evals_to as assert_evals_to;
|
||||
use core::ffi::c_void;
|
||||
use indoc::indoc;
|
||||
use roc_std::{RocList, RocStr};
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn roc_alloc(size: usize, _alignment: u32) -> *mut c_void {
|
||||
libc::malloc(size)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn roc_realloc(
|
||||
c_ptr: *mut c_void,
|
||||
new_size: usize,
|
||||
_old_size: usize,
|
||||
_alignment: u32,
|
||||
) -> *mut c_void {
|
||||
libc::realloc(c_ptr, new_size)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn roc_dealloc(c_ptr: *mut c_void, _alignment: u32) {
|
||||
libc::free(c_ptr)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn roc_panic(c_ptr: *mut c_void, tag_id: u32) {
|
||||
use roc_gen_llvm::llvm::build::PanicTagId;
|
||||
|
||||
use std::convert::TryFrom;
|
||||
use std::ffi::CStr;
|
||||
use std::os::raw::c_char;
|
||||
|
||||
match PanicTagId::try_from(tag_id) {
|
||||
Ok(PanicTagId::NullTerminatedString) => {
|
||||
let slice = CStr::from_ptr(c_ptr as *const c_char);
|
||||
let string = slice.to_str().unwrap();
|
||||
eprintln!("Roc hit a panic: {}", string);
|
||||
std::process::exit(1);
|
||||
}
|
||||
Err(_) => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn roc_list_construction() {
|
||||
let list = RocList::from_slice(&[1i64; 23]);
|
||||
assert_eq!(&list, &list);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn empty_list_literal() {
|
||||
assert_evals_to!("[]", RocList::from_slice(&[]), RocList<i64>);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_literal_empty_record() {
|
||||
assert_evals_to!("[{}]", RocList::from_slice(&[()]), RocList<()>);
|
||||
}
|
||||
|
@ -68,6 +39,7 @@ fn int_singleton_list_literal() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn int_list_literal() {
|
||||
assert_evals_to!("[ 12, 9 ]", RocList::from_slice(&[12, 9]), RocList<i64>);
|
||||
assert_evals_to!(
|
||||
|
@ -78,6 +50,7 @@ fn int_list_literal() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn bool_list_literal() {
|
||||
// NOTE: make sure to explicitly declare the elements to be of type bool, or
|
||||
// use both True and False; only using one of them causes the list to in practice be
|
||||
|
@ -156,6 +129,7 @@ fn bool_list_literal() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn variously_sized_list_literals() {
|
||||
assert_evals_to!("[]", RocList::from_slice(&[]), RocList<i64>);
|
||||
assert_evals_to!("[1]", RocList::from_slice(&[1]), RocList<i64>);
|
||||
|
@ -174,6 +148,7 @@ fn variously_sized_list_literals() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_append() {
|
||||
assert_evals_to!(
|
||||
"List.append [1] 2",
|
||||
|
@ -188,6 +163,7 @@ fn list_append() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_take_first() {
|
||||
assert_evals_to!(
|
||||
"List.takeFirst [1, 2, 3] 2",
|
||||
|
@ -212,6 +188,7 @@ fn list_take_first() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_drop() {
|
||||
assert_evals_to!(
|
||||
"List.drop [1,2,3] 2",
|
||||
|
@ -223,6 +200,7 @@ fn list_drop() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_drop_at() {
|
||||
assert_evals_to!(
|
||||
"List.dropAt [1, 2, 3] 0",
|
||||
|
@ -239,6 +217,7 @@ fn list_drop_at() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_drop_at_shared() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -260,6 +239,7 @@ fn list_drop_at_shared() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_drop_last() {
|
||||
assert_evals_to!(
|
||||
"List.dropLast [1, 2, 3]",
|
||||
|
@ -271,6 +251,7 @@ fn list_drop_last() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_drop_last_mutable() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -292,6 +273,7 @@ fn list_drop_last_mutable() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_drop_first() {
|
||||
assert_evals_to!(
|
||||
"List.dropFirst [1, 2, 3]",
|
||||
|
@ -303,6 +285,7 @@ fn list_drop_first() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_swap() {
|
||||
assert_evals_to!("List.swap [] 0 1", RocList::from_slice(&[]), RocList<i64>);
|
||||
assert_evals_to!(
|
||||
|
@ -338,11 +321,13 @@ fn list_swap() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_append_to_empty_list() {
|
||||
assert_evals_to!("List.append [] 3", RocList::from_slice(&[3]), RocList<i64>);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_append_to_empty_list_of_int() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -360,6 +345,7 @@ fn list_append_to_empty_list_of_int() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_append_bools() {
|
||||
assert_evals_to!(
|
||||
"List.append [ True, False ] True",
|
||||
|
@ -369,6 +355,7 @@ fn list_append_bools() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_append_longer_list() {
|
||||
assert_evals_to!(
|
||||
"List.append [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ] 23",
|
||||
|
@ -378,6 +365,7 @@ fn list_append_longer_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_prepend() {
|
||||
assert_evals_to!("List.prepend [] 1", RocList::from_slice(&[1]), RocList<i64>);
|
||||
assert_evals_to!(
|
||||
|
@ -416,6 +404,7 @@ fn list_prepend() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_prepend_bools() {
|
||||
assert_evals_to!(
|
||||
"List.prepend [ True, False ] True",
|
||||
|
@ -425,6 +414,7 @@ fn list_prepend_bools() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_prepend_big_list() {
|
||||
assert_evals_to!(
|
||||
"List.prepend [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 100, 100, 100, 100 ] 9",
|
||||
|
@ -436,6 +426,7 @@ fn list_prepend_big_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_walk_backwards_empty_all_inline() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -463,6 +454,7 @@ fn list_walk_backwards_empty_all_inline() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_walk_backwards_with_str() {
|
||||
assert_evals_to!(
|
||||
r#"List.walkBackwards [ "x", "y", "z" ] "<" Str.concat"#,
|
||||
|
@ -478,6 +470,7 @@ fn list_walk_backwards_with_str() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_walk_backwards_with_record() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -505,6 +498,7 @@ fn list_walk_backwards_with_record() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_walk_with_str() {
|
||||
assert_evals_to!(
|
||||
r#"List.walk [ "x", "y", "z" ] "<" Str.concat"#,
|
||||
|
@ -520,11 +514,13 @@ fn list_walk_with_str() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_walk_subtraction() {
|
||||
assert_evals_to!(r#"List.walk [ 1, 2 ] 1 Num.sub"#, (1 - 1) - 2, i64);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_walk_until_sum() {
|
||||
assert_evals_to!(
|
||||
r#"List.walkUntil [ 1, 2 ] 0 \a,b -> Continue (a + b)"#,
|
||||
|
@ -534,6 +530,7 @@ fn list_walk_until_sum() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_walk_until_even_prefix_sum() {
|
||||
assert_evals_to!(
|
||||
r#"
|
||||
|
@ -551,6 +548,7 @@ fn list_walk_until_even_prefix_sum() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_if_empty_list_of_int() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -568,6 +566,7 @@ fn list_keep_if_empty_list_of_int() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_if_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -586,6 +585,7 @@ fn list_keep_if_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_if_always_true_for_non_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -607,6 +607,7 @@ fn list_keep_if_always_true_for_non_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_if_always_false_for_non_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -624,6 +625,7 @@ fn list_keep_if_always_false_for_non_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_if_one() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -641,6 +643,7 @@ fn list_keep_if_one() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_if_str_is_hello() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -657,6 +660,7 @@ fn list_keep_if_str_is_hello() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_on_empty_list_with_int_layout() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -674,6 +678,7 @@ fn list_map_on_empty_list_with_int_layout() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_on_non_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -691,6 +696,7 @@ fn list_map_on_non_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_changes_input() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -708,6 +714,7 @@ fn list_map_changes_input() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_on_big_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -727,6 +734,7 @@ fn list_map_on_big_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_with_type_change() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -745,6 +753,7 @@ fn list_map_with_type_change() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_using_defined_function() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -766,6 +775,7 @@ fn list_map_using_defined_function() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_all_inline() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -779,6 +789,7 @@ fn list_map_all_inline() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_closure() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -799,6 +810,7 @@ fn list_map_closure() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map4_group() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -812,6 +824,7 @@ fn list_map4_group() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map4_different_length() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -830,6 +843,7 @@ fn list_map4_different_length() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map3_group() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -843,6 +857,7 @@ fn list_map3_group() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map3_different_length() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -860,6 +875,7 @@ fn list_map3_different_length() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map2_pair() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -874,6 +890,7 @@ fn list_map2_pair() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map2_different_lengths() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -890,11 +907,13 @@ fn list_map2_different_lengths() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_empty_list() {
|
||||
assert_evals_to!("List.join []", RocList::from_slice(&[]), RocList<i64>);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_one_list() {
|
||||
assert_evals_to!(
|
||||
"List.join [ [1, 2, 3 ] ]",
|
||||
|
@ -904,6 +923,7 @@ fn list_join_one_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_two_non_empty_lists() {
|
||||
assert_evals_to!(
|
||||
"List.join [ [1, 2, 3 ] , [4 ,5, 6] ]",
|
||||
|
@ -913,6 +933,7 @@ fn list_join_two_non_empty_lists() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_two_non_empty_lists_of_float() {
|
||||
assert_evals_to!(
|
||||
"List.join [ [ 1.2, 1.1 ], [ 2.1, 2.2 ] ]",
|
||||
|
@ -922,6 +943,7 @@ fn list_join_two_non_empty_lists_of_float() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_to_big_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -947,6 +969,7 @@ fn list_join_to_big_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_defined_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -964,6 +987,7 @@ fn list_join_defined_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_all_empty_lists() {
|
||||
assert_evals_to!(
|
||||
"List.join [ [], [], [] ]",
|
||||
|
@ -973,6 +997,7 @@ fn list_join_all_empty_lists() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_one_empty_list() {
|
||||
assert_evals_to!(
|
||||
"List.join [ [ 1.2, 1.1 ], [] ]",
|
||||
|
@ -982,12 +1007,14 @@ fn list_join_one_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_single() {
|
||||
assert_evals_to!("List.single 1", RocList::from_slice(&[1]), RocList<i64>);
|
||||
assert_evals_to!("List.single 5.6", RocList::from_slice(&[5.6]), RocList<f64>);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_repeat() {
|
||||
assert_evals_to!(
|
||||
"List.repeat 5 1",
|
||||
|
@ -1028,6 +1055,7 @@ fn list_repeat() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_reverse() {
|
||||
assert_evals_to!(
|
||||
"List.reverse [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]",
|
||||
|
@ -1043,6 +1071,7 @@ fn list_reverse() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_reverse_empty_list_of_int() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1060,11 +1089,13 @@ fn list_reverse_empty_list_of_int() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_reverse_empty_list() {
|
||||
assert_evals_to!("List.reverse []", RocList::from_slice(&[]), RocList<i64>);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn foobarbaz() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1086,11 +1117,13 @@ fn foobarbaz() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_two_empty_lists() {
|
||||
assert_evals_to!("List.concat [] []", RocList::from_slice(&[]), RocList<i64>);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_two_empty_lists_of_int() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1112,6 +1145,7 @@ fn list_concat_two_empty_lists_of_int() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_second_list_is_empty() {
|
||||
assert_evals_to!(
|
||||
"List.concat [ 12, 13 ] []",
|
||||
|
@ -1126,6 +1160,7 @@ fn list_concat_second_list_is_empty() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_first_list_is_empty() {
|
||||
assert_evals_to!(
|
||||
"List.concat [] [ 23, 24 ]",
|
||||
|
@ -1135,6 +1170,7 @@ fn list_concat_first_list_is_empty() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_two_non_empty_lists() {
|
||||
assert_evals_to!(
|
||||
"List.concat [1, 2 ] [ 3, 4 ]",
|
||||
|
@ -1144,6 +1180,7 @@ fn list_concat_two_non_empty_lists() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_two_bigger_non_empty_lists() {
|
||||
assert_evals_to!(
|
||||
"List.concat [ 1.1, 2.2 ] [ 3.3, 4.4, 5.5 ]",
|
||||
|
@ -1173,6 +1210,7 @@ fn assert_concat_worked(num_elems1: i64, num_elems2: i64) {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_empty_list() {
|
||||
assert_concat_worked(0, 0);
|
||||
assert_concat_worked(1, 0);
|
||||
|
@ -1196,6 +1234,7 @@ fn list_concat_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_nonempty_lists() {
|
||||
assert_concat_worked(1, 1);
|
||||
assert_concat_worked(1, 2);
|
||||
|
@ -1211,6 +1250,7 @@ fn list_concat_nonempty_lists() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_concat_large() {
|
||||
with_larger_debug_stack(|| {
|
||||
// these values produce mono ASTs so large that
|
||||
|
@ -1223,16 +1263,19 @@ fn list_concat_large() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn empty_list_len() {
|
||||
assert_evals_to!("List.len []", 0, usize);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn basic_int_list_len() {
|
||||
assert_evals_to!("List.len [ 12, 9, 6, 3 ]", 4, usize);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn loaded_int_list_len() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1248,6 +1291,7 @@ fn loaded_int_list_len() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn fn_int_list_len() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1265,16 +1309,19 @@ fn fn_int_list_len() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn int_list_is_empty() {
|
||||
assert_evals_to!("List.isEmpty [ 12, 9, 6, 3 ]", false, bool);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn empty_list_is_empty() {
|
||||
assert_evals_to!("List.isEmpty []", true, bool);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn first_int_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1290,6 +1337,7 @@ fn first_int_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
#[ignore]
|
||||
fn first_wildcard_empty_list() {
|
||||
assert_evals_to!(
|
||||
|
@ -1306,6 +1354,7 @@ fn first_wildcard_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn first_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1321,6 +1370,7 @@ fn first_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn last_int_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1336,6 +1386,7 @@ fn last_int_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
#[ignore]
|
||||
fn last_wildcard_empty_list() {
|
||||
assert_evals_to!(
|
||||
|
@ -1352,6 +1403,7 @@ fn last_wildcard_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn last_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1367,6 +1419,7 @@ fn last_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn get_empty_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1382,6 +1435,7 @@ fn get_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
#[ignore]
|
||||
fn get_wildcard_empty_list() {
|
||||
assert_evals_to!(
|
||||
|
@ -1398,6 +1452,7 @@ fn get_wildcard_empty_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn get_int_list_ok() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1413,6 +1468,7 @@ fn get_int_list_ok() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn get_int_list_oob() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1428,6 +1484,7 @@ fn get_int_list_oob() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn get_set_unique_int_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1443,6 +1500,7 @@ fn get_set_unique_int_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn set_unique_int_list() {
|
||||
assert_evals_to!(
|
||||
"List.set [ 12, 9, 7, 1, 5 ] 2 33",
|
||||
|
@ -1452,6 +1510,7 @@ fn set_unique_int_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn set_unique_list_oob() {
|
||||
assert_evals_to!(
|
||||
"List.set [ 3, 17, 4.1 ] 1337 9.25",
|
||||
|
@ -1461,6 +1520,7 @@ fn set_unique_list_oob() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn set_shared_int_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1488,6 +1548,7 @@ fn set_shared_int_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn set_shared_list_oob() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1514,6 +1575,7 @@ fn set_shared_list_oob() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn get_unique_int_list() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1531,6 +1593,7 @@ fn get_unique_int_list() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn gen_wrap_len() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1547,6 +1610,7 @@ fn gen_wrap_len() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn gen_wrap_first() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1563,6 +1627,7 @@ fn gen_wrap_first() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn gen_duplicate() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1585,6 +1650,7 @@ fn gen_duplicate() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn gen_swap() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1613,6 +1679,7 @@ fn gen_swap() {
|
|||
}
|
||||
|
||||
// #[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
// fn gen_partition() {
|
||||
// assert_evals_to!(
|
||||
// indoc!(
|
||||
|
@ -1665,6 +1732,7 @@ fn gen_swap() {
|
|||
// }
|
||||
|
||||
// #[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
// fn gen_partition() {
|
||||
// assert_evals_to!(
|
||||
// indoc!(
|
||||
|
@ -1702,8 +1770,8 @@ fn gen_swap() {
|
|||
// RocList<i64>
|
||||
// );
|
||||
// }
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn gen_quicksort() {
|
||||
with_larger_debug_stack(|| {
|
||||
assert_evals_to!(
|
||||
|
@ -1775,6 +1843,7 @@ fn gen_quicksort() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn foobar2() {
|
||||
with_larger_debug_stack(|| {
|
||||
assert_evals_to!(
|
||||
|
@ -1848,6 +1917,7 @@ fn foobar2() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn foobar() {
|
||||
with_larger_debug_stack(|| {
|
||||
assert_evals_to!(
|
||||
|
@ -1921,6 +1991,7 @@ fn foobar() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn empty_list_increment_decrement() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1937,6 +2008,7 @@ fn empty_list_increment_decrement() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_literal_increment_decrement() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1953,6 +2025,7 @@ fn list_literal_increment_decrement() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_pass_to_function() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1972,6 +2045,7 @@ fn list_pass_to_function() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_pass_to_set() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -1991,6 +2065,7 @@ fn list_pass_to_set() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_wrap_in_tag() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -2008,6 +2083,7 @@ fn list_wrap_in_tag() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_contains() {
|
||||
assert_evals_to!(indoc!("List.contains [1,2,3] 1"), true, bool);
|
||||
|
||||
|
@ -2016,6 +2092,7 @@ fn list_contains() {
|
|||
assert_evals_to!(indoc!("List.contains [] 4"), false, bool);
|
||||
}
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_min() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -2042,6 +2119,7 @@ fn list_min() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_max() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -2068,6 +2146,7 @@ fn list_max() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_sum() {
|
||||
assert_evals_to!("List.sum []", 0, i64);
|
||||
assert_evals_to!("List.sum [ 1, 2, 3 ]", 6, i64);
|
||||
|
@ -2075,6 +2154,7 @@ fn list_sum() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_product() {
|
||||
assert_evals_to!("List.product []", 1, i64);
|
||||
assert_evals_to!("List.product [ 1, 2, 3 ]", 6, i64);
|
||||
|
@ -2082,6 +2162,7 @@ fn list_product() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_oks() {
|
||||
assert_evals_to!("List.keepOks [] (\\x -> x)", 0, i64);
|
||||
assert_evals_to!(
|
||||
|
@ -2102,6 +2183,7 @@ fn list_keep_oks() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_keep_errs() {
|
||||
assert_evals_to!("List.keepErrs [] (\\x -> x)", 0, i64);
|
||||
assert_evals_to!(
|
||||
|
@ -2127,6 +2209,7 @@ fn list_keep_errs() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_map_with_index() {
|
||||
assert_evals_to!(
|
||||
"List.mapWithIndex [0,0,0] (\\index, x -> Num.intCast index + x)",
|
||||
|
@ -2136,6 +2219,7 @@ fn list_map_with_index() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
#[should_panic(expected = r#"Roc failed with message: "integer addition overflowed!"#)]
|
||||
fn cleanup_because_exception() {
|
||||
assert_evals_to!(
|
||||
|
@ -2155,6 +2239,7 @@ fn cleanup_because_exception() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_range() {
|
||||
assert_evals_to!("List.range 0 -1", RocList::from_slice(&[]), RocList<i64>);
|
||||
assert_evals_to!("List.range 0 0", RocList::from_slice(&[0]), RocList<i64>);
|
||||
|
@ -2166,6 +2251,7 @@ fn list_range() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_sort_with() {
|
||||
assert_evals_to!(
|
||||
"List.sortWith [] Num.compare",
|
||||
|
@ -2185,6 +2271,7 @@ fn list_sort_with() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_any() {
|
||||
assert_evals_to!("List.any [] (\\e -> e > 3)", false, bool);
|
||||
assert_evals_to!("List.any [ 1, 2, 3 ] (\\e -> e > 3)", false, bool);
|
||||
|
@ -2192,6 +2279,7 @@ fn list_any() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
#[ignore]
|
||||
fn list_any_empty_with_unknown_element_type() {
|
||||
// Segfaults with invalid memory reference. Running this as a stand-alone
|
||||
|
@ -2204,6 +2292,7 @@ fn list_any_empty_with_unknown_element_type() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
#[should_panic(expected = r#"Roc failed with message: "invalid ret_layout""#)]
|
||||
fn lists_with_incompatible_type_param_in_if() {
|
||||
assert_evals_to!(
|
||||
|
@ -2224,6 +2313,7 @@ fn lists_with_incompatible_type_param_in_if() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn map_with_index_multi_record() {
|
||||
// see https://github.com/rtfeldman/roc/issues/1700
|
||||
assert_evals_to!(
|
||||
|
@ -2238,6 +2328,7 @@ fn map_with_index_multi_record() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn empty_list_of_function_type() {
|
||||
// see https://github.com/rtfeldman/roc/issues/1732
|
||||
assert_evals_to!(
|
||||
|
@ -2266,6 +2357,7 @@ fn empty_list_of_function_type() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_map() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -2285,6 +2377,7 @@ fn list_join_map() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm"))]
|
||||
fn list_join_map_empty() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue