| 32 | } |
| 33 | |
| 34 | func TestMerge(t *testing.T) { |
| 35 | tests := []struct { |
| 36 | desc string |
| 37 | input Package |
| 38 | other Package |
| 39 | want Package |
| 40 | }{ |
| 41 | { |
| 42 | desc: "units are merged", |
| 43 | input: Package{ |
| 44 | Name: "", |
| 45 | units: []parse.SourceUnit{ |
| 46 | { |
| 47 | Decls: []ast.Decl{ |
| 48 | makeDecl(t, ast.NewAtom("some_decl"), nil, nil, nil), |
| 49 | }, |
| 50 | Clauses: []ast.Clause{ |
| 51 | ast.NewClause(ast.NewAtom("some_clause"), nil), |
| 52 | }, |
| 53 | }, |
| 54 | { |
| 55 | Decls: []ast.Decl{ |
| 56 | makeDecl(t, ast.NewAtom("some_decl_in_another_unit"), nil, nil, nil), |
| 57 | }, |
| 58 | }, |
| 59 | }, |
| 60 | }, |
| 61 | other: Package{ |
| 62 | Name: "", |
| 63 | units: []parse.SourceUnit{ |
| 64 | { |
| 65 | Decls: []ast.Decl{ |
| 66 | makeDecl(t, ast.NewAtom("some_decl"), nil, nil, nil), |
| 67 | }, |
| 68 | Clauses: []ast.Clause{ |
| 69 | ast.NewClause(ast.NewAtom("some_clause"), nil), |
| 70 | }, |
| 71 | }, |
| 72 | { |
| 73 | Decls: []ast.Decl{ |
| 74 | makeDecl(t, ast.NewAtom("some_decl_in_another_unit"), nil, nil, nil), |
| 75 | }, |
| 76 | }, |
| 77 | }, |
| 78 | }, |
| 79 | want: Package{ |
| 80 | Name: "", |
| 81 | units: []parse.SourceUnit{ |
| 82 | { |
| 83 | Decls: []ast.Decl{ |
| 84 | makeDecl(t, ast.NewAtom("some_decl"), nil, nil, nil), |
| 85 | }, |
| 86 | Clauses: []ast.Clause{ |
| 87 | ast.NewClause(ast.NewAtom("some_clause"), nil), |
| 88 | }, |
| 89 | }, |
| 90 | { |
| 91 | Decls: []ast.Decl{ |