veripb-parser 0.1.2

VeriPB parsing library for OPB, WCNF, and DIMACS CNF formats.
Documentation
use logos::Logos;
use veripb_formula::prelude::*;
use veripb_parser::{
    assignment_parser::parse_bool_assignment_into, assignment_token::AssignmentToken,
};

#[test]
fn read_assignment_without_resize() {
    let mut var_names = VarNameManager::default();
    let x1 = var_names.add_by_name("x1");
    let x2 = var_names.add_by_name("x83e42");
    let x3 = var_names.add_by_name("s452345llkj4dse435");
    let x4 = var_names.add_by_name("rs3s322ed3e3d");
    let x5 = var_names.add_by_name("x8fewsafssfwsa3w82");
    let mut assignment = Assignment::with_size(var_names.len());

    let mut lex = AssignmentToken::lexer("x1 ~s452345llkj4dse435 x8fewsafssfwsa3w82");
    parse_bool_assignment_into(&mut lex, &mut var_names, &mut assignment).expect("Parsing error!");

    assert_eq!(assignment.get_value(x1), BoolValue::Assigned(true));
    assert_eq!(assignment.get_value(x2), BoolValue::Unassigned);
    assert_eq!(assignment.get_value(x3), BoolValue::Assigned(false));
    assert_eq!(assignment.get_value(x4), BoolValue::Unassigned);
    assert_eq!(assignment.get_value(x5), BoolValue::Assigned(true));
}

#[test]
fn read_assignment_with_resize() {
    let mut var_names = VarNameManager::default();
    let x1 = var_names.add_by_name("x1");
    let x2 = var_names.add_by_name("x83e42");
    let x3 = var_names.add_by_name("s452345llkj4dse435");
    let x4 = var_names.add_by_name("rs3s322ed3e3d");
    let mut assignment = Assignment::with_size(var_names.len());

    let mut lex = AssignmentToken::lexer("x1 ~s452345llkj4dse435 x8fewsafssfwsa3w82");
    parse_bool_assignment_into(&mut lex, &mut var_names, &mut assignment).expect("Parsing error!");

    assert_eq!(assignment.get_value(x1), BoolValue::Assigned(true));
    assert_eq!(assignment.get_value(x2), BoolValue::Unassigned);
    assert_eq!(assignment.get_value(x3), BoolValue::Assigned(false));
    assert_eq!(assignment.get_value(x4), BoolValue::Unassigned);
    assert_eq!(
        assignment.get_value(var_names.get_idx("x8fewsafssfwsa3w82").unwrap()),
        BoolValue::Assigned(true)
    );
    assert_eq!(assignment.len(), 5);
}