|
178 | 178 | end |
179 | 179 | end |
180 | 180 | end |
181 | | - |
| 181 | + |
182 | 182 | context "triple pattern combinations" do |
183 | 183 | let(:graph) { |
184 | 184 | # Normally we would not want all of this crap in the graph for each |
|
295 | 295 | sol3 = q3.execute(graph, solutions: sol2) |
296 | 296 | expect(sol3).to have_result_set [ { s: EX.x6, o: EX.target, o2: EX.target2, o3: EX.target3 } ] |
297 | 297 | end |
298 | | - |
| 298 | + |
299 | 299 | it "has bindings" do |
300 | 300 | query = RDF::Query.new do |query| |
301 | 301 | query << [:s, EX.p, :o] |
|
478 | 478 | graph << [EX.xu, EX.p, EX.z] |
479 | 479 | end |
480 | 480 | } |
481 | | - |
| 481 | + |
482 | 482 | describe "graph-1" do |
483 | 483 | subject { |
484 | 484 | query = RDF::Query.new {pattern [:x, EX.p, RDF::Literal::Integer.new(1)]} |
|
488 | 488 | it "has two solutions" do |
489 | 489 | expect(subject.count).to eq 2 |
490 | 490 | end |
491 | | - |
| 491 | + |
492 | 492 | it "has xi1 as a solution" do |
493 | 493 | expect(subject.filter(x: EX.xi1)).not_to be_empty |
494 | 494 | end |
495 | | - |
| 495 | + |
496 | 496 | it "has xi2 as a solution" do |
497 | 497 | expect(subject.filter(x: EX.xi2)).not_to be_empty |
498 | 498 | end |
499 | 499 | end |
500 | 500 |
|
501 | | - |
| 501 | + |
502 | 502 | describe "graph-2" do |
503 | 503 | subject { |
504 | 504 | query = RDF::Query.new {pattern [:x, EX.p, RDF::Literal::Double.new("1.0e0")]} |
|
508 | 508 | it "has one solution" do |
509 | 509 | expect(subject.count).to eq 1 |
510 | 510 | end |
511 | | - |
| 511 | + |
512 | 512 | it "has xd1 as a solution" do |
513 | 513 | expect(subject.filter(x: EX.xd1)).not_to be_empty |
514 | 514 | end |
|
629 | 629 | # restrictions, because the semantics of leading optional patterns |
630 | 630 | # are hard to get right. |
631 | 631 | expect do |
632 | | - query = RDF::Query.new do |query| |
| 632 | + query = RDF::Query.new(validate: true) do |query| |
633 | 633 | query.pattern [:s, EX.p2, :o], optional: true |
634 | 634 | query.pattern [:s, EX.p, EX.o] |
635 | 635 | end |
636 | 636 | query.execute(@graph) |
637 | 637 | end.to raise_error(ArgumentError) |
638 | 638 |
|
639 | 639 | expect do |
640 | | - query = RDF::Query.new do |query| |
| 640 | + query = RDF::Query.new(validate: true) do |query| |
641 | 641 | query.pattern [:s, EX.p, EX.o] |
642 | 642 | query.pattern [:s, EX.p2, :o], optional: true |
643 | 643 | query.pattern [:s, EX.x, EX.x] |
|
716 | 716 | count |
717 | 717 | ).to eq 1 |
718 | 718 | end |
719 | | - |
| 719 | + |
720 | 720 | it "accepts a block" do |
721 | 721 | expect( |
722 | 722 | subject. |
|
725 | 725 | ).to eq 1 |
726 | 726 | end |
727 | 727 | end |
728 | | - |
| 728 | + |
729 | 729 | context "order" do |
730 | 730 | it "returns ordered solutions using a symbol" do |
731 | 731 | orig = subject.dup |
|
750 | 750 | subject.order {|a, b| a[:p] <=> b[:p]} |
751 | 751 | end |
752 | 752 | end |
753 | | - |
| 753 | + |
754 | 754 | it "should support duplicate elimination" do |
755 | 755 | [:distinct, :reduced].each do |op| |
756 | 756 | solutions = RDF::Query::Solutions(subject.to_a * 2) |
|
776 | 776 | it "returns nil by default" do |
777 | 777 | expect(subject.graph_name).to be_nil |
778 | 778 | end |
779 | | - |
| 779 | + |
780 | 780 | it "sets and returns a graph_name" do |
781 | 781 | subject.graph_name = RDF.first |
782 | 782 | expect(subject.graph_name).to eq RDF.first |
|
794 | 794 | it "returns false with no graph_name" do |
795 | 795 | expect(subject.named?).to be_falsey |
796 | 796 | end |
797 | | - |
| 797 | + |
798 | 798 | it "returns true with a graph_name" do |
799 | 799 | subject.graph_name = RDF.first |
800 | 800 | expect(subject.named?).to be_truthy |
801 | 801 | end |
802 | 802 | end |
803 | | - |
| 803 | + |
804 | 804 | describe "#unnamed?" do |
805 | 805 | it "returns true with no graph_name" do |
806 | 806 | expect(subject.unnamed?).to be_truthy |
807 | 807 | end |
808 | | - |
| 808 | + |
809 | 809 | it "returns false with a graph_name" do |
810 | 810 | subject.graph_name = RDF.first |
811 | 811 | expect(subject.unnamed?).to be_falsey |
812 | 812 | end |
813 | 813 | end |
814 | | - |
| 814 | + |
815 | 815 | describe "#+" do |
816 | 816 | it "returns a new RDF::Query" do |
817 | 817 | rhs = RDF::Query.new |
818 | 818 | q = subject + rhs |
819 | 819 | expect(q).not_to be_equal(subject) |
820 | 820 | expect(q).not_to be_equal(rhs) |
821 | 821 | end |
822 | | - |
| 822 | + |
823 | 823 | it "contains patterns from each query in order" do |
824 | 824 | subject.pattern [EX.first, EX.second, EX.third] |
825 | 825 | rhs = RDF::Query.new |
|
0 commit comments