piske 0.1.2

The piske programming langauge for generative art
Documentation
extern crate tempfile;
extern crate piske;

use piske::value::Value;

mod test_utils;
use test_utils::*;

#[test]
fn test_image_dims() {

    let prog = r#"
set_image_dims(50, 60);
get_image_height()
    "#;
    expect_prog(prog, Value::Int(50));

    let prog = r#"
set_image_dims(50, 60);
get_image_width()
    "#;
    expect_prog(prog, Value::Int(60));
}

#[test]
fn test_project() {
    expect_prog(r#"project(1024, 512, 0+0i, 2+2i)"#, Value::Complex(1.0, 0.0));
    expect_prog(r#"project(512 + 256, 512 + 256, 0+0i, 2+2i)"#, Value::Complex(0.5, 0.5));
    expect_prog(r#"project(256, 512 + 256, 0+0i, 2+2i)"#, Value::Complex(-0.5, 0.5));
    expect_prog(r#"project(512 + 256, 256, 0+0i, 2+2i)"#, Value::Complex(0.5, -0.5));

    let prog = r#"
let z = 0+0i;
let c = project(0, 1024, 0+0i, 2+2i);
z = z * z + c;
z
    "#;
    expect_prog(prog, Value::Complex(-1.0, 1.0));

}

#[test]
fn test_complex_extraction() {
    expect_prog(r"re(1+0i)", Value::Float(1.0));
    expect_prog(r"im(1+0i)", Value::Float(0.0));
}