Comment on relevant Level 1 searches.
[irspy-moved-to-github.git] / lib / ZOOM / IRSpy / Test / Search / Bath.pm
index 5522989..47af894 100644 (file)
@@ -3,6 +3,27 @@
 # Specifically section 5.A.0 ("Functional Area A: Level 0 Basic
 # Bibliographic Search and Retrieval") and its subsections:
 #      http://www.collectionscanada.gc.ca/bath/tp-bath2.7-e.htm#a
+# And section 5.A.1 ("Functional Area A: Level 1 Bibliographic Search
+# and Retrieval") and subsections 14 (Standard Identifier Search) and
+# 15 (Date of Publication Search):
+#      http://www.collectionscanada.gc.ca/bath/tp-bath2.10-e.htm#b
+#
+# The Bath Level 0 searches have different access-points, but share:
+#      Relation (2)            3       equal
+#      Position (3)            3       any position in field
+#      Structure (4)           2       word
+#      Truncation (5)          100     do not truncate
+#      Completeness (6)        1       incomplete subfield
+# But Seb's bug report at:
+#      http://bugzilla.indexdata.dk/show_bug.cgi?id=3352#c0
+# wants use to use s=al t=r,l, where "s" is structure (4) and "al" is
+# AND-list, which apparently sends NO structure attribute; and "t" is
+# truncation (5) and "r,l" is right-and-left truncation (3).
+#
+# AND-listing (and selection of word or phrase-structure) is now
+# invoked in the Toroid, when the list of attributes is emitted; but
+# we can't test for 5=100 here, as the Bath Profile says to do, and
+# then use that as justification for emitting 5=3 in the Toroid.
 
 package ZOOM::IRSpy::Test::Search::Bath;
 
@@ -17,10 +38,11 @@ use ZOOM::IRSpy::Utils qw(isodate);
 
 
 my @bath_queries = (
-    [ author => 1003 ],        # 5.A.0.1
-    [ title => 4 ],    # 5.A.0.2
-    [ subject => 21 ], # 5.A.0.3
-    [ any => 1016 ],   # 5.A.0.4
+    # Name    =>  use, rel, pos, str, tru, com
+    [ author  => 1003,   3,   3,   2, 100,   1 ],      # 5.A.0.1
+    [ title   =>    4,   3,   3,   2, 100,   1 ],      # 5.A.0.2
+    [ subject =>   21,   3,   3,   2, 100,   1 ],      # 5.A.0.3
+    [ any     => 1016,   3,   3,   2, 100,   1 ],      # 5.A.0.4
     );
 
 
@@ -39,9 +61,9 @@ sub start_search {
        if $qindex >= @bath_queries;
 
     my $ref = $bath_queries[$qindex];
-    my($name, $use_attr) = @$ref;
+    my($name, @attrs) = @$ref;
 
-    my $query = "\@attr 1=$use_attr \@attr 2=3 \@attr 3=3 \@attr 4=2 \@attr 5=100 \@attr 6=1 the";
+    my $query = join(" ", map { "\@attr $_=" . $attrs[$_-1] } (1..6)) . " the";
     $conn->irspy_search_pqf($query, { qindex => $qindex }, {},
                            ZOOM::Event::ZEND, \&search_complete,
                            "exception", \&search_complete);
@@ -55,7 +77,7 @@ sub search_complete {
 
     my $qindex = $udata->{qindex};
     my $ref = $bath_queries[$qindex];
-    my($name, $use_attr) = @$ref;
+    my($name) = @$ref;
 
     my $n = $task->{rs}->size();