fracturedjson 0.1.1

Rust port of FracturedJsonJs: human-friendly JSON formatter with optional comment support.
Documentation
mod helpers;

use fracturedjson::Formatter;
use std::fs;
use std::path::Path;

#[test]
fn no_spaces_anywhere() {
    let base_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("../test/StandardJsonFiles/1.json");
    let input = fs::read_to_string(base_dir).unwrap();

    let mut formatter = Formatter::new();
    formatter.options.use_tab_to_indent = true;
    formatter.options.colon_padding = false;
    formatter.options.comma_padding = false;
    formatter.options.nested_bracket_padding = false;
    formatter.options.simple_bracket_padding = false;
    formatter.options.max_compact_array_complexity = 0;
    formatter.options.max_table_row_complexity = -1;
    formatter.options.max_prop_name_padding = 0;

    let output = formatter.reformat(&input, 0).unwrap();
    assert!(!output.contains(' '));
}

#[test]
fn simple_bracket_padding_works_for_tables() {
    let input = "[[1, 2],[3, 4]]";

    let mut formatter = Formatter::new();
    formatter.options.max_inline_complexity = 1;
    formatter.options.simple_bracket_padding = true;

    let output = formatter.reformat(input, 0).unwrap();
    let output_lines: Vec<&str> = output.trim_end().split('\n').collect();

    assert_eq!(output_lines.len(), 4);
    assert!(output_lines[1].contains("[ 1, 2 ]"));
    assert!(output_lines[2].contains("[ 3, 4 ]"));

    formatter.options.simple_bracket_padding = false;
    let output = formatter.reformat(input, 0).unwrap();
    let output_lines: Vec<&str> = output.trim_end().split('\n').collect();

    assert_eq!(output_lines.len(), 4);
    assert!(output_lines[1].contains("[1, 2]"));
    assert!(output_lines[2].contains("[3, 4]"));
}