Fix all the test fallout
This commit is contained in:
parent
092c5078be
commit
69a0cdf491
7 changed files with 100 additions and 87 deletions
|
@ -1523,7 +1523,7 @@ fn test_basic() {
|
|||
fn foo() {}
|
||||
));
|
||||
}
|
||||
|
||||
/* NOTE: When there's a snapshot, update this (yay quasiquoter!)
|
||||
#[test]
|
||||
fn test_smalltalk() {
|
||||
let cx = mk_ctxt();
|
||||
|
@ -1531,6 +1531,7 @@ fn test_smalltalk() {
|
|||
fn foo() -> int { 3 + 4 } // first smalltalk program ever executed.
|
||||
));
|
||||
}
|
||||
*/
|
||||
|
||||
#[test]
|
||||
fn test_more() {
|
||||
|
|
|
@ -754,14 +754,14 @@ mod test {
|
|||
|
||||
#[test] fn idents_name_eq_test() {
|
||||
assert!(segments_name_eq(
|
||||
[Ident{name:3,ctxt:4}, Ident{name:78,ctxt:82}]
|
||||
[Ident{name:Name(3),ctxt:4}, Ident{name:Name(78),ctxt:82}]
|
||||
.iter().map(ident_to_segment).collect::<Vec<PathSegment>>().as_slice(),
|
||||
[Ident{name:3,ctxt:104}, Ident{name:78,ctxt:182}]
|
||||
[Ident{name:Name(3),ctxt:104}, Ident{name:Name(78),ctxt:182}]
|
||||
.iter().map(ident_to_segment).collect::<Vec<PathSegment>>().as_slice()));
|
||||
assert!(!segments_name_eq(
|
||||
[Ident{name:3,ctxt:4}, Ident{name:78,ctxt:82}]
|
||||
[Ident{name:Name(3),ctxt:4}, Ident{name:Name(78),ctxt:82}]
|
||||
.iter().map(ident_to_segment).collect::<Vec<PathSegment>>().as_slice(),
|
||||
[Ident{name:3,ctxt:104}, Ident{name:77,ctxt:182}]
|
||||
[Ident{name:Name(3),ctxt:104}, Ident{name:Name(77),ctxt:182}]
|
||||
.iter().map(ident_to_segment).collect::<Vec<PathSegment>>().as_slice()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1150,7 +1150,7 @@ mod test {
|
|||
use super::{pattern_bindings, expand_crate, contains_macro_escape};
|
||||
use super::{PatIdentFinder, IdentRenamer, PatIdentRenamer};
|
||||
use ast;
|
||||
use ast::{Attribute_, AttrOuter, MetaWord};
|
||||
use ast::{Attribute_, AttrOuter, MetaWord, Name};
|
||||
use attr;
|
||||
use codemap;
|
||||
use codemap::Spanned;
|
||||
|
@ -1665,12 +1665,12 @@ foo_module!()
|
|||
let f_ident = token::str_to_ident("f");
|
||||
let x_ident = token::str_to_ident("x");
|
||||
let int_ident = token::str_to_ident("int");
|
||||
let renames = vec!((x_ident,16));
|
||||
let renames = vec!((x_ident,Name(16)));
|
||||
let mut renamer = IdentRenamer{renames: &renames};
|
||||
let renamed_crate = renamer.fold_crate(the_crate);
|
||||
let idents = crate_idents(&renamed_crate);
|
||||
let resolved : Vec<ast::Name> = idents.iter().map(|id| mtwt::resolve(*id)).collect();
|
||||
assert_eq!(resolved,vec!(f_ident.name,16,int_ident.name,16,16,16));
|
||||
assert_eq!(resolved,vec!(f_ident.name,Name(16),int_ident.name,Name(16),Name(16),Name(16)));
|
||||
}
|
||||
|
||||
// test the PatIdentRenamer; only PatIdents get renamed
|
||||
|
@ -1680,13 +1680,13 @@ foo_module!()
|
|||
let f_ident = token::str_to_ident("f");
|
||||
let x_ident = token::str_to_ident("x");
|
||||
let int_ident = token::str_to_ident("int");
|
||||
let renames = vec!((x_ident,16));
|
||||
let renames = vec!((x_ident,Name(16)));
|
||||
let mut renamer = PatIdentRenamer{renames: &renames};
|
||||
let renamed_crate = renamer.fold_crate(the_crate);
|
||||
let idents = crate_idents(&renamed_crate);
|
||||
let resolved : Vec<ast::Name> = idents.iter().map(|id| mtwt::resolve(*id)).collect();
|
||||
let x_name = x_ident.name;
|
||||
assert_eq!(resolved,vec!(f_ident.name,16,int_ident.name,16,x_name,x_name));
|
||||
assert_eq!(resolved,vec!(f_ident.name,Name(16),int_ident.name,Name(16),x_name,x_name));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -301,8 +301,8 @@ mod tests {
|
|||
assert_eq!(s.clone(), vec!(14));
|
||||
}
|
||||
|
||||
fn id(n: Name, s: SyntaxContext) -> Ident {
|
||||
Ident {name: n, ctxt: s}
|
||||
fn id(n: u32, s: SyntaxContext) -> Ident {
|
||||
Ident {name: Name(n), ctxt: s}
|
||||
}
|
||||
|
||||
// because of the SCTable, I now need a tidy way of
|
||||
|
@ -349,12 +349,12 @@ mod tests {
|
|||
fn test_unfold_refold(){
|
||||
let mut t = new_sctable_internal();
|
||||
|
||||
let test_sc = vec!(M(3),R(id(101,0),14),M(9));
|
||||
let test_sc = vec!(M(3),R(id(101,0),Name(14)),M(9));
|
||||
assert_eq!(unfold_test_sc(test_sc.clone(),EMPTY_CTXT,&mut t),4);
|
||||
{
|
||||
let table = t.table.borrow();
|
||||
assert!(*table.get(2) == Mark(9,0));
|
||||
assert!(*table.get(3) == Rename(id(101,0),14,2));
|
||||
assert!(*table.get(3) == Rename(id(101,0),Name(14),2));
|
||||
assert!(*table.get(4) == Mark(3,3));
|
||||
}
|
||||
assert_eq!(refold_test_sc(4,&t),test_sc);
|
||||
|
@ -381,8 +381,8 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_marksof () {
|
||||
let stopname = 242;
|
||||
let name1 = 243;
|
||||
let stopname = Name(242);
|
||||
let name1 = Name(243);
|
||||
let mut t = new_sctable_internal();
|
||||
assert_eq!(marksof_internal (EMPTY_CTXT,stopname,&t),Vec::new());
|
||||
// FIXME #5074: ANF'd to dodge nested calls
|
||||
|
@ -396,16 +396,16 @@ mod tests {
|
|||
assert_eq! (marksof_internal (ans, stopname,&t), vec!(16));}
|
||||
// rename where stop doesn't match:
|
||||
{ let chain = vec!(M(9),
|
||||
R(id(name1,
|
||||
R(id(name1.uint() as u32,
|
||||
apply_mark_internal (4, EMPTY_CTXT,&mut t)),
|
||||
100101102),
|
||||
Name(100101102)),
|
||||
M(14));
|
||||
let ans = unfold_test_sc(chain,EMPTY_CTXT,&mut t);
|
||||
assert_eq! (marksof_internal (ans, stopname, &t), vec!(9,14));}
|
||||
// rename where stop does match
|
||||
{ let name1sc = apply_mark_internal(4, EMPTY_CTXT, &mut t);
|
||||
let chain = vec!(M(9),
|
||||
R(id(name1, name1sc),
|
||||
R(id(name1.uint() as u32, name1sc),
|
||||
stopname),
|
||||
M(14));
|
||||
let ans = unfold_test_sc(chain,EMPTY_CTXT,&mut t);
|
||||
|
@ -419,55 +419,55 @@ mod tests {
|
|||
let mut t = new_sctable_internal();
|
||||
let mut rt = HashMap::new();
|
||||
// - ctxt is MT
|
||||
assert_eq!(resolve_internal(id(a,EMPTY_CTXT),&mut t, &mut rt),a);
|
||||
assert_eq!(resolve_internal(id(a,EMPTY_CTXT),&mut t, &mut rt),Name(a));
|
||||
// - simple ignored marks
|
||||
{ let sc = unfold_marks(vec!(1,2,3),EMPTY_CTXT,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt),a);}
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt),Name(a));}
|
||||
// - orthogonal rename where names don't match
|
||||
{ let sc = unfold_test_sc(vec!(R(id(50,EMPTY_CTXT),51),M(12)),EMPTY_CTXT,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt),a);}
|
||||
{ let sc = unfold_test_sc(vec!(R(id(50,EMPTY_CTXT),Name(51)),M(12)),EMPTY_CTXT,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt),Name(a));}
|
||||
// - rename where names do match, but marks don't
|
||||
{ let sc1 = apply_mark_internal(1,EMPTY_CTXT,&mut t);
|
||||
let sc = unfold_test_sc(vec!(R(id(a,sc1),50),
|
||||
let sc = unfold_test_sc(vec!(R(id(a,sc1),Name(50)),
|
||||
M(1),
|
||||
M(2)),
|
||||
EMPTY_CTXT,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), a);}
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), Name(a));}
|
||||
// - rename where names and marks match
|
||||
{ let sc1 = unfold_test_sc(vec!(M(1),M(2)),EMPTY_CTXT,&mut t);
|
||||
let sc = unfold_test_sc(vec!(R(id(a,sc1),50),M(1),M(2)),EMPTY_CTXT,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), 50); }
|
||||
let sc = unfold_test_sc(vec!(R(id(a,sc1),Name(50)),M(1),M(2)),EMPTY_CTXT,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), Name(50)); }
|
||||
// - rename where names and marks match by literal sharing
|
||||
{ let sc1 = unfold_test_sc(vec!(M(1),M(2)),EMPTY_CTXT,&mut t);
|
||||
let sc = unfold_test_sc(vec!(R(id(a,sc1),50)),sc1,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), 50); }
|
||||
let sc = unfold_test_sc(vec!(R(id(a,sc1),Name(50))),sc1,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), Name(50)); }
|
||||
// - two renames of the same var.. can only happen if you use
|
||||
// local-expand to prevent the inner binding from being renamed
|
||||
// during the rename-pass caused by the first:
|
||||
println!("about to run bad test");
|
||||
{ let sc = unfold_test_sc(vec!(R(id(a,EMPTY_CTXT),50),
|
||||
R(id(a,EMPTY_CTXT),51)),
|
||||
{ let sc = unfold_test_sc(vec!(R(id(a,EMPTY_CTXT),Name(50)),
|
||||
R(id(a,EMPTY_CTXT),Name(51))),
|
||||
EMPTY_CTXT,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), 51); }
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt), Name(51)); }
|
||||
// the simplest double-rename:
|
||||
{ let a_to_a50 = apply_rename_internal(id(a,EMPTY_CTXT),50,EMPTY_CTXT,&mut t);
|
||||
let a50_to_a51 = apply_rename_internal(id(a,a_to_a50),51,a_to_a50,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,a50_to_a51),&mut t, &mut rt),51);
|
||||
{ let a_to_a50 = apply_rename_internal(id(a,EMPTY_CTXT),Name(50),EMPTY_CTXT,&mut t);
|
||||
let a50_to_a51 = apply_rename_internal(id(a,a_to_a50),Name(51),a_to_a50,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,a50_to_a51),&mut t, &mut rt),Name(51));
|
||||
// mark on the outside doesn't stop rename:
|
||||
let sc = apply_mark_internal(9,a50_to_a51,&mut t);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt),51);
|
||||
assert_eq!(resolve_internal(id(a,sc),&mut t, &mut rt),Name(51));
|
||||
// but mark on the inside does:
|
||||
let a50_to_a51_b = unfold_test_sc(vec!(R(id(a,a_to_a50),51),
|
||||
let a50_to_a51_b = unfold_test_sc(vec!(R(id(a,a_to_a50),Name(51)),
|
||||
M(9)),
|
||||
a_to_a50,
|
||||
&mut t);
|
||||
assert_eq!(resolve_internal(id(a,a50_to_a51_b),&mut t, &mut rt),50);}
|
||||
assert_eq!(resolve_internal(id(a,a50_to_a51_b),&mut t, &mut rt),Name(50));}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mtwt_resolve_test(){
|
||||
let a = 40;
|
||||
assert_eq!(resolve(id(a,EMPTY_CTXT)),a);
|
||||
assert_eq!(resolve(id(a,EMPTY_CTXT)),Name(a));
|
||||
}
|
||||
|
||||
|
||||
|
@ -496,10 +496,10 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn new_resolves_test() {
|
||||
let renames = vec!((Ident{name:23,ctxt:EMPTY_CTXT},24),
|
||||
(Ident{name:29,ctxt:EMPTY_CTXT},29));
|
||||
let renames = vec!((Ident{name:Name(23),ctxt:EMPTY_CTXT},Name(24)),
|
||||
(Ident{name:Name(29),ctxt:EMPTY_CTXT},Name(29)));
|
||||
let new_ctxt1 = apply_renames(&renames,EMPTY_CTXT);
|
||||
assert_eq!(resolve(Ident{name:23,ctxt:new_ctxt1}),24);
|
||||
assert_eq!(resolve(Ident{name:29,ctxt:new_ctxt1}),29);
|
||||
assert_eq!(resolve(Ident{name:Name(23),ctxt:new_ctxt1}),Name(24));
|
||||
assert_eq!(resolve(Ident{name:Name(29),ctxt:new_ctxt1}),Name(29));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1326,11 +1326,14 @@ mod test {
|
|||
"/* my source file */ \
|
||||
fn main() { println!(\"zebra\"); }\n".to_string());
|
||||
let id = str_to_ident("fn");
|
||||
assert_eq!(string_reader.next_token().tok, token::COMMENT);
|
||||
assert_eq!(string_reader.next_token().tok, token::WS);
|
||||
let tok1 = string_reader.next_token();
|
||||
let tok2 = TokenAndSpan{
|
||||
tok:token::IDENT(id, false),
|
||||
sp:Span {lo:BytePos(21),hi:BytePos(23),expn_info: None}};
|
||||
assert_eq!(tok1,tok2);
|
||||
assert_eq!(string_reader.next_token().tok, token::WS);
|
||||
// the 'main' id is already read:
|
||||
assert_eq!(string_reader.last_pos.clone(), BytePos(28));
|
||||
// read another token:
|
||||
|
@ -1359,6 +1362,7 @@ mod test {
|
|||
#[test] fn doublecolonparsing () {
|
||||
check_tokenization(setup(&mk_sh(), "a b".to_string()),
|
||||
vec!(mk_ident("a",false),
|
||||
token::WS,
|
||||
mk_ident("b",false)));
|
||||
}
|
||||
|
||||
|
@ -1372,6 +1376,7 @@ mod test {
|
|||
#[test] fn dcparsing_3 () {
|
||||
check_tokenization(setup(&mk_sh(), "a ::b".to_string()),
|
||||
vec!(mk_ident("a",false),
|
||||
token::WS,
|
||||
token::MOD_SEP,
|
||||
mk_ident("b",false)));
|
||||
}
|
||||
|
@ -1380,22 +1385,23 @@ mod test {
|
|||
check_tokenization(setup(&mk_sh(), "a:: b".to_string()),
|
||||
vec!(mk_ident("a",true),
|
||||
token::MOD_SEP,
|
||||
token::WS,
|
||||
mk_ident("b",false)));
|
||||
}
|
||||
|
||||
#[test] fn character_a() {
|
||||
assert_eq!(setup(&mk_sh(), "'a'".to_string()).next_token().tok,
|
||||
token::LIT_CHAR('a'));
|
||||
token::LIT_CHAR(token::intern("a")));
|
||||
}
|
||||
|
||||
#[test] fn character_space() {
|
||||
assert_eq!(setup(&mk_sh(), "' '".to_string()).next_token().tok,
|
||||
token::LIT_CHAR(' '));
|
||||
token::LIT_CHAR(token::intern(" ")));
|
||||
}
|
||||
|
||||
#[test] fn character_escaped() {
|
||||
assert_eq!(setup(&mk_sh(), "'\\n'".to_string()).next_token().tok,
|
||||
token::LIT_CHAR('\n'));
|
||||
token::LIT_CHAR(token::intern("\\n")));
|
||||
}
|
||||
|
||||
#[test] fn lifetime_name() {
|
||||
|
@ -1407,7 +1413,7 @@ mod test {
|
|||
assert_eq!(setup(&mk_sh(),
|
||||
"r###\"\"#a\\b\x00c\"\"###".to_string()).next_token()
|
||||
.tok,
|
||||
token::LIT_STR_RAW(token::str_to_ident("\"#a\\b\x00c\""), 3));
|
||||
token::LIT_STR_RAW(token::intern("\"#a\\b\x00c\""), 3));
|
||||
}
|
||||
|
||||
#[test] fn line_doc_comments() {
|
||||
|
@ -1417,9 +1423,13 @@ mod test {
|
|||
}
|
||||
|
||||
#[test] fn nested_block_comments() {
|
||||
assert_eq!(setup(&mk_sh(),
|
||||
"/* /* */ */'a'".to_string()).next_token().tok,
|
||||
token::LIT_CHAR('a'));
|
||||
let sh = mk_sh();
|
||||
let mut lexer = setup(&sh, "/* /* */ */'a'".to_string());
|
||||
match lexer.next_token().tok {
|
||||
token::COMMENT => { },
|
||||
_ => fail!("expected a comment!")
|
||||
}
|
||||
assert_eq!(lexer.next_token().tok, token::LIT_CHAR(token::intern("a")));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -757,8 +757,8 @@ mod test {
|
|||
use ast;
|
||||
use ext::mtwt;
|
||||
|
||||
fn mark_ident(id : Ident, m : ast::Mrk) -> Ident {
|
||||
Ident{name:id.name,ctxt:mtwt::apply_mark(m,id.ctxt)}
|
||||
fn mark_ident(id : ast::Ident, m : ast::Mrk) -> ast::Ident {
|
||||
ast::Ident { name: id.name, ctxt:mtwt::apply_mark(m, id.ctxt) }
|
||||
}
|
||||
|
||||
#[test] fn mtwt_token_eq_test() {
|
||||
|
|
|
@ -222,36 +222,38 @@ impl StrInterner {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use ast::Name;
|
||||
|
||||
#[test]
|
||||
#[should_fail]
|
||||
fn i1 () {
|
||||
let i : Interner<RcStr> = Interner::new();
|
||||
i.get(13);
|
||||
i.get(Name(13));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn interner_tests () {
|
||||
let i : Interner<RcStr> = Interner::new();
|
||||
// first one is zero:
|
||||
assert_eq!(i.intern(RcStr::new("dog")), 0);
|
||||
assert_eq!(i.intern(RcStr::new("dog")), Name(0));
|
||||
// re-use gets the same entry:
|
||||
assert_eq!(i.intern(RcStr::new("dog")), 0);
|
||||
assert_eq!(i.intern(RcStr::new("dog")), Name(0));
|
||||
// different string gets a different #:
|
||||
assert_eq!(i.intern(RcStr::new("cat")), 1);
|
||||
assert_eq!(i.intern(RcStr::new("cat")), 1);
|
||||
assert_eq!(i.intern(RcStr::new("cat")), Name(1));
|
||||
assert_eq!(i.intern(RcStr::new("cat")), Name(1));
|
||||
// dog is still at zero
|
||||
assert_eq!(i.intern(RcStr::new("dog")), 0);
|
||||
assert_eq!(i.intern(RcStr::new("dog")), Name(0));
|
||||
// gensym gets 3
|
||||
assert_eq!(i.gensym(RcStr::new("zebra") ), 2);
|
||||
assert_eq!(i.gensym(RcStr::new("zebra") ), Name(2));
|
||||
// gensym of same string gets new number :
|
||||
assert_eq!(i.gensym (RcStr::new("zebra") ), 3);
|
||||
assert_eq!(i.gensym (RcStr::new("zebra") ), Name(3));
|
||||
// gensym of *existing* string gets new number:
|
||||
assert_eq!(i.gensym(RcStr::new("dog")), 4);
|
||||
assert_eq!(i.get(0), RcStr::new("dog"));
|
||||
assert_eq!(i.get(1), RcStr::new("cat"));
|
||||
assert_eq!(i.get(2), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(3), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(4), RcStr::new("dog"));
|
||||
assert_eq!(i.gensym(RcStr::new("dog")), Name(4));
|
||||
assert_eq!(i.get(Name(0)), RcStr::new("dog"));
|
||||
assert_eq!(i.get(Name(1)), RcStr::new("cat"));
|
||||
assert_eq!(i.get(Name(2)), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(Name(3)), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(Name(4)), RcStr::new("dog"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -261,39 +263,39 @@ mod tests {
|
|||
RcStr::new("Bob"),
|
||||
RcStr::new("Carol")
|
||||
]);
|
||||
assert_eq!(i.get(0), RcStr::new("Alan"));
|
||||
assert_eq!(i.get(1), RcStr::new("Bob"));
|
||||
assert_eq!(i.get(2), RcStr::new("Carol"));
|
||||
assert_eq!(i.intern(RcStr::new("Bob")), 1);
|
||||
assert_eq!(i.get(Name(0)), RcStr::new("Alan"));
|
||||
assert_eq!(i.get(Name(1)), RcStr::new("Bob"));
|
||||
assert_eq!(i.get(Name(2)), RcStr::new("Carol"));
|
||||
assert_eq!(i.intern(RcStr::new("Bob")), Name(1));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn string_interner_tests() {
|
||||
let i : StrInterner = StrInterner::new();
|
||||
// first one is zero:
|
||||
assert_eq!(i.intern("dog"), 0);
|
||||
assert_eq!(i.intern("dog"), Name(0));
|
||||
// re-use gets the same entry:
|
||||
assert_eq!(i.intern ("dog"), 0);
|
||||
assert_eq!(i.intern ("dog"), Name(0));
|
||||
// different string gets a different #:
|
||||
assert_eq!(i.intern("cat"), 1);
|
||||
assert_eq!(i.intern("cat"), 1);
|
||||
assert_eq!(i.intern("cat"), Name(1));
|
||||
assert_eq!(i.intern("cat"), Name(1));
|
||||
// dog is still at zero
|
||||
assert_eq!(i.intern("dog"), 0);
|
||||
assert_eq!(i.intern("dog"), Name(0));
|
||||
// gensym gets 3
|
||||
assert_eq!(i.gensym("zebra"), 2);
|
||||
assert_eq!(i.gensym("zebra"), Name(2));
|
||||
// gensym of same string gets new number :
|
||||
assert_eq!(i.gensym("zebra"), 3);
|
||||
assert_eq!(i.gensym("zebra"), Name(3));
|
||||
// gensym of *existing* string gets new number:
|
||||
assert_eq!(i.gensym("dog"), 4);
|
||||
assert_eq!(i.gensym("dog"), Name(4));
|
||||
// gensym tests again with gensym_copy:
|
||||
assert_eq!(i.gensym_copy(2), 5);
|
||||
assert_eq!(i.get(5), RcStr::new("zebra"));
|
||||
assert_eq!(i.gensym_copy(2), 6);
|
||||
assert_eq!(i.get(6), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(0), RcStr::new("dog"));
|
||||
assert_eq!(i.get(1), RcStr::new("cat"));
|
||||
assert_eq!(i.get(2), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(3), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(4), RcStr::new("dog"));
|
||||
assert_eq!(i.gensym_copy(Name(2)), Name(5));
|
||||
assert_eq!(i.get(Name(5)), RcStr::new("zebra"));
|
||||
assert_eq!(i.gensym_copy(Name(2)), Name(6));
|
||||
assert_eq!(i.get(Name(6)), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(Name(0)), RcStr::new("dog"));
|
||||
assert_eq!(i.get(Name(1)), RcStr::new("cat"));
|
||||
assert_eq!(i.get(Name(2)), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(Name(3)), RcStr::new("zebra"));
|
||||
assert_eq!(i.get(Name(4)), RcStr::new("dog"));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue