@@ -503,4 +503,191 @@ else
503503 echo " Test set_pos passed"
504504fi
505505
506+
507+ # Testing the CSV header and position attribute features
508+ # ####################################################################
509+ cat << EOF > archive_position.xml
510+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
511+ <unit xmlns="http://www.srcML.org/srcML/src" xmlns:pos="http://www.srcML.org/srcML/position" revision="1.0.0" pos:tabs="8">
512+
513+ <unit revision="1.0.0" language="C++" filename="a.cpp" pos:tabs="8" hash="7caa72dfd567a04e9e64b0502814bde478a317b5"><decl_stmt pos:start="1:1" pos:end="1:6"><decl pos:start="1:1" pos:end="1:5"><type pos:start="1:1" pos:end="1:3"><name pos:start="1:1" pos:end="1:3">int</name></type> <name pos:start="1:5" pos:end="1:5">x</name></decl>;</decl_stmt>
514+ </unit>
515+
516+ </unit>
517+ EOF
518+
519+ output=$( cat archive_position.xml | ../bin/nameCollector --csv 2>&1 )
520+ expected=$( cat << EOF
521+ Name,Type,Category,File,Position,Language,Stereotype
522+ x,int,global,a.cpp,1:5,C++,
523+ EOF
524+ )
525+ if [[ " $output " != " $expected " ]]; then
526+ echo " Test archive_position passed failed!"
527+ echo " Expected: '$expected '"
528+ echo " Got: '$output '"
529+ exit 1
530+ else
531+ echo " Test archive_position passed"
532+ fi
533+
534+ # ####################################################################
535+ cat << EOF > archive_no_position.xml
536+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
537+ <unit xmlns="http://www.srcML.org/srcML/src" revision="1.0.0">
538+
539+ <unit revision="1.0.0" language="C++" filename="a.cpp" hash="7caa72dfd567a04e9e64b0502814bde478a317b5"><decl_stmt><decl><type><name>int</name></type> <name>x</name></decl>;</decl_stmt>
540+ </unit>
541+
542+ </unit>
543+ EOF
544+
545+ output=$( cat archive_no_position.xml | ../bin/nameCollector --csv 2>&1 )
546+ expected=$( cat << EOF
547+ WARNING: srcml --position NOT used to generate input file.
548+ Name,Type,Category,File,Position,Language,Stereotype
549+ x,int,global,a.cpp,,C++,
550+ EOF
551+ )
552+ if [[ " $output " != " $expected " ]]; then
553+ echo " Test archive_no_position passed failed!"
554+ echo " Expected: '$expected '"
555+ echo " Got: '$output '"
556+ exit 1
557+ else
558+ echo " Test archive_no_position passed"
559+ fi
560+
561+ # ####################################################################
562+ cat << EOF > single_unit_position.xml
563+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
564+ <unit xmlns="http://www.srcML.org/srcML/src" xmlns:pos="http://www.srcML.org/srcML/position" revision="1.0.0" language="C++" filename="a.cpp" pos:tabs="8"><decl_stmt pos:start="1:1" pos:end="1:6"><decl pos:start="1:1" pos:end="1:5"><type pos:start="1:1" pos:end="1:3"><name pos:start="1:1" pos:end="1:3">int</name></type> <name pos:start="1:5" pos:end="1:5">x</name></decl>;</decl_stmt>
565+ </unit>
566+ EOF
567+
568+ output=$( cat single_unit_position.xml | ../bin/nameCollector --csv 2>&1 )
569+ expected=$( cat << EOF
570+ Name,Type,Category,File,Position,Language,Stereotype
571+ x,int,global,a.cpp,1:5,C++,
572+ EOF
573+ )
574+ if [[ " $output " != " $expected " ]]; then
575+ echo " Test single_unit_position passed failed!"
576+ echo " Expected: '$expected '"
577+ echo " Got: '$output '"
578+ exit 1
579+ else
580+ echo " Test single_unit_position passed"
581+ fi
582+
583+ # ####################################################################
584+ cat << EOF > single_unit_no_position.xml
585+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
586+ <unit xmlns="http://www.srcML.org/srcML/src" revision="1.0.0" language="C++" filename="a.cpp"><decl_stmt><decl><type><name>int</name></type> <name>x</name></decl>;</decl_stmt>
587+ </unit>
588+ EOF
589+
590+ output=$( cat single_unit_no_position.xml | ../bin/nameCollector --csv 2>&1 )
591+ expected=$( cat << EOF
592+ WARNING: srcml --position NOT used to generate input file.
593+ Name,Type,Category,File,Position,Language,Stereotype
594+ x,int,global,a.cpp,,C++,
595+ EOF
596+ )
597+ if [[ " $output " != " $expected " ]]; then
598+ echo " Test single_unit_no_position passed failed!"
599+ echo " Expected: '$expected '"
600+ echo " Got: '$output '"
601+ exit 1
602+ else
603+ echo " Test single_unit_no_position passed"
604+ fi
605+
606+ # ####################################################################
607+ cat << EOF > double_file_position.xml
608+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
609+ <unit xmlns="http://www.srcML.org/srcML/src" xmlns:pos="http://www.srcML.org/srcML/position" revision="1.0.0" pos:tabs="8">
610+
611+ <unit revision="1.0.0" language="C++" filename="a.cpp" pos:tabs="8" hash="7caa72dfd567a04e9e64b0502814bde478a317b5"><decl_stmt pos:start="1:1" pos:end="1:6"><decl pos:start="1:1" pos:end="1:5"><type pos:start="1:1" pos:end="1:3"><name pos:start="1:1" pos:end="1:3">int</name></type> <name pos:start="1:5" pos:end="1:5">x</name></decl>;</decl_stmt>
612+ </unit>
613+
614+ <unit revision="1.0.0" language="C++" filename="b.cpp" pos:tabs="8" hash="4d9f53177cc4ca85d01a8b93ffb6d9b4f9effe7f"><decl_stmt pos:start="1:1" pos:end="1:6"><decl pos:start="1:1" pos:end="1:5"><type pos:start="1:1" pos:end="1:3"><name pos:start="1:1" pos:end="1:3">int</name></type> <name pos:start="1:5" pos:end="1:5">y</name></decl>;</decl_stmt>
615+ </unit>
616+
617+ </unit>
618+ EOF
619+
620+ output=$( cat double_file_position.xml | ../bin/nameCollector --csv 2>&1 )
621+ expected=$( cat << EOF
622+ Name,Type,Category,File,Position,Language,Stereotype
623+ x,int,global,a.cpp,1:5,C++,
624+ y,int,global,b.cpp,1:5,C++,
625+ EOF
626+ )
627+ if [[ " $output " != " $expected " ]]; then
628+ echo " Test double_file_position passed failed!"
629+ echo " Expected: '$expected '"
630+ echo " Got: '$output '"
631+ exit 1
632+ else
633+ echo " Test double_file_position passed"
634+ fi
635+
636+ # ####################################################################
637+ cat << EOF > double_file_no_position.xml
638+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
639+ <unit xmlns="http://www.srcML.org/srcML/src" revision="1.0.0">
640+
641+ <unit revision="1.0.0" language="C++" filename="a.cpp" hash="7caa72dfd567a04e9e64b0502814bde478a317b5"><decl_stmt><decl><type><name>int</name></type> <name>x</name></decl>;</decl_stmt>
642+ </unit>
643+
644+ <unit revision="1.0.0" language="C++" filename="b.cpp" hash="4d9f53177cc4ca85d01a8b93ffb6d9b4f9effe7f"><decl_stmt><decl><type><name>int</name></type> <name>y</name></decl>;</decl_stmt>
645+ </unit>
646+
647+ </unit>
648+ EOF
649+
650+ output=$( cat double_file_no_position.xml | ../bin/nameCollector --csv 2>&1 )
651+ expected=$( cat << EOF
652+ WARNING: srcml --position NOT used to generate input file.
653+ Name,Type,Category,File,Position,Language,Stereotype
654+ x,int,global,a.cpp,,C++,
655+ y,int,global,b.cpp,,C++,
656+ EOF
657+ )
658+ if [[ " $output " != " $expected " ]]; then
659+ echo " Test double_file_no_position passed failed!"
660+ echo " Expected: '$expected '"
661+ echo " Got: '$output '"
662+ exit 1
663+ else
664+ echo " Test double_file_no_position passed"
665+ fi
666+
667+ # ####################################################################
668+ cat << EOF > archive_no_header.xml
669+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
670+ <unit xmlns="http://www.srcML.org/srcML/src" xmlns:pos="http://www.srcML.org/srcML/position" revision="1.0.0" pos:tabs="8">
671+
672+ <unit revision="1.0.0" language="C++" filename="a.cpp" pos:tabs="8" hash="7caa72dfd567a04e9e64b0502814bde478a317b5"><decl_stmt pos:start="1:1" pos:end="1:6"><decl pos:start="1:1" pos:end="1:5"><type pos:start="1:1" pos:end="1:3"><name pos:start="1:1" pos:end="1:3">int</name></type> <name pos:start="1:5" pos:end="1:5">x</name></decl>;</decl_stmt>
673+ </unit>
674+
675+ </unit>
676+ EOF
677+
678+ output=$( cat archive_no_header.xml | ../bin/nameCollector --csv -n 2>&1 )
679+ expected=$( cat << EOF
680+ x,int,global,a.cpp,1:5,C++,
681+ EOF
682+ )
683+ if [[ " $output " != " $expected " ]]; then
684+ echo " Test archive_no_header passed failed!"
685+ echo " Expected: '$expected '"
686+ echo " Got: '$output '"
687+ exit 1
688+ else
689+ echo " Test archive_no_header passed"
690+ fi
691+
692+
506693exit 0
0 commit comments