mango 0.4.0

The Mango programming language (UNDER CONSTRUCTION)
use std::str::FromStr;

use crate::token::collect::MemoryTokenStream;
use crate::token::tokens::AssociationToken;
use crate::token::tokens::EndStatementToken;
use crate::token::tokens::IdentifierToken;
use crate::token::tokens::KeywordToken;
use crate::token::tokens::LiteralToken;
use crate::util::strtype::Name;
use crate::util::strtype::StrType;

#[test]
fn test_tokens_eq() {
    use super::Tokens::*;
    let my_var = Name::new("my_var").unwrap();
    let tokens = MemoryTokenStream::new(vec![
        Keyword(KeywordToken::from_str("let").unwrap()),
        Keyword(KeywordToken::from_str("mut").unwrap()),
        Identifier(IdentifierToken::from_name(my_var)),
        Association(AssociationToken::from_unprefixed()),
        Literal(LiteralToken::Int(21)),
        EndStatement(EndStatementToken::new_semicolon()),
        Identifier(IdentifierToken::from_name(my_var)),
        Association(AssociationToken::from_str("+").unwrap()),
        Identifier(IdentifierToken::from_name(my_var)),
    ]);
    assert_eq!(tokens, tokens);
    assert_ne!(tokens, MemoryTokenStream::new(vec![]));
}