MCPcopy
hub / github.com/google/mangle / TestExtract

Function TestExtract

packages/packages_test.go:542–635  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

540}
541
542func TestExtract(t *testing.T) {
543 tests := []struct {
544 desc string
545 input parse.SourceUnit
546 want Package
547 }{
548 {
549 desc: "package decl contains extra atoms",
550 input: parse.SourceUnit{
551 Clauses: []ast.Clause{},
552 Decls: []ast.Decl{
553 makeDecl(t, ast.NewAtom("Package"), []ast.Atom{ast.NewAtom("name", ast.String("foo.bar")), ast.NewAtom("extra", ast.String("string"))}, nil, nil),
554 },
555 },
556 want: Package{
557 Name: "foo.bar",
558 Atoms: []ast.Atom{ast.NewAtom("extra", ast.String("string"))},
559 units: []parse.SourceUnit{
560 {
561 Clauses: []ast.Clause{},
562 Decls: []ast.Decl{
563 makeDecl(t, ast.NewAtom("Package"), []ast.Atom{ast.NewAtom("name", ast.String("foo.bar")), ast.NewAtom("extra", ast.String("string"))}, nil, nil),
564 },
565 },
566 },
567 },
568 },
569 {
570 desc: "contains package decl",
571 input: parse.SourceUnit{
572 Clauses: []ast.Clause{
573 ast.NewClause(ast.NewAtom("head", ast.Variable{"X"}), []ast.Term{ast.NewAtom("expanded", ast.Variable{"X"})}),
574 ast.NewClause(ast.NewAtom("expanded", ast.Variable{"X"}), []ast.Term{ast.String("constant")}),
575 },
576 Decls: []ast.Decl{
577 makeDecl(t, ast.NewAtom("head"), nil, nil, nil),
578 makeDecl(t, ast.NewAtom("Package"), []ast.Atom{ast.NewAtom("name", ast.String("foo.bar"))}, nil, nil),
579 },
580 },
581 want: Package{
582 Name: "foo.bar",
583 Atoms: []ast.Atom{},
584 units: []parse.SourceUnit{
585 {
586 Clauses: []ast.Clause{
587 ast.NewClause(ast.NewAtom("head", ast.Variable{"X"}), []ast.Term{ast.NewAtom("expanded", ast.Variable{"X"})}),
588 ast.NewClause(ast.NewAtom("expanded", ast.Variable{"X"}), []ast.Term{ast.String("constant")}),
589 },
590 Decls: []ast.Decl{
591 makeDecl(t, ast.NewAtom("head"), nil, nil, nil),
592 makeDecl(t, ast.NewAtom("Package"), []ast.Atom{ast.NewAtom("name", ast.String("foo.bar"))}, nil, nil),
593 },
594 },
595 },
596 },
597 },
598 {
599 desc: "does not contain package decl",

Callers

nothing calls this directly

Calls 5

NewAtomFunction · 0.92
StringFunction · 0.92
NewClauseFunction · 0.92
ExtractFunction · 0.85
makeDeclFunction · 0.70

Tested by

no test coverage detected