|
1 | 1 | /*******************************************************************************
|
2 |
| - * Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others. |
| 2 | + * Copyright (c) 2021 Eclipse RDF4J contributors. |
3 | 3 | *
|
4 | 4 | * All rights reserved. This program and the accompanying materials
|
5 | 5 | * are made available under the terms of the Eclipse Distribution License v1.0
|
|
10 | 10 | *******************************************************************************/
|
11 | 11 | package org.eclipse.rdf4j.query.algebra.evaluation;
|
12 | 12 |
|
| 13 | +import static org.assertj.core.api.Assertions.fail; |
13 | 14 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
14 | 15 | import static org.junit.jupiter.api.Assertions.assertFalse;
|
| 16 | +import static org.junit.jupiter.api.Assertions.assertNotNull; |
15 | 17 | import static org.junit.jupiter.api.Assertions.assertTrue;
|
16 | 18 |
|
| 19 | +import java.util.Iterator; |
| 20 | +import java.util.NoSuchElementException; |
| 21 | + |
17 | 22 | import org.eclipse.rdf4j.model.ValueFactory;
|
18 | 23 | import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
|
19 | 24 | import org.eclipse.rdf4j.model.vocabulary.RDF;
|
| 25 | +import org.eclipse.rdf4j.query.Binding; |
20 | 26 | import org.eclipse.rdf4j.query.BindingSet;
|
21 | 27 | import org.eclipse.rdf4j.query.impl.MapBindingSet;
|
22 | 28 | import org.junit.jupiter.api.BeforeEach;
|
@@ -77,4 +83,82 @@ public void testEqualsHashcode() {
|
77 | 83 | assertEquals(bs1.hashCode(), bs2.hashCode());
|
78 | 84 | }
|
79 | 85 |
|
| 86 | + @Test |
| 87 | + public void testEmptyIterator() { |
| 88 | + |
| 89 | + ArrayBindingSet bs = new ArrayBindingSet("foo"); |
| 90 | + Iterator<Binding> iterator = bs.iterator(); |
| 91 | + assertNotNull(iterator); |
| 92 | + assertFalse(iterator.hasNext()); |
| 93 | + } |
| 94 | + |
| 95 | + @Test |
| 96 | + public void testOneElementIterator() { |
| 97 | + ArrayBindingSet bs = new ArrayBindingSet("foo"); |
| 98 | + bs.setBinding("foo", RDF.FIRST); |
| 99 | + Iterator<Binding> iterator = bs.iterator(); |
| 100 | + assertNotNull(iterator); |
| 101 | + assertTrue(iterator.hasNext()); |
| 102 | + assertTrue(iterator.hasNext()); |
| 103 | + assertTrue(iterator.hasNext()); |
| 104 | + assertNotNull(iterator.next()); |
| 105 | + assertFalse(iterator.hasNext()); |
| 106 | + try { |
| 107 | + iterator.next(); |
| 108 | + fail("There are no more elements"); |
| 109 | + } catch (NoSuchElementException e) { |
| 110 | + assertNotNull(e); |
| 111 | + } |
| 112 | + } |
| 113 | + |
| 114 | + @Test |
| 115 | + public void testThreeElementIterator() { |
| 116 | + ArrayBindingSet bs = new ArrayBindingSet("first", "alt", "bag"); |
| 117 | + bs.setBinding("first", RDF.FIRST); |
| 118 | + bs.setBinding("alt", RDF.ALT); |
| 119 | + bs.setBinding("bag", RDF.BAG); |
| 120 | + Iterator<Binding> iterator = bs.iterator(); |
| 121 | + assertNotNull(iterator); |
| 122 | + assertTrue(iterator.hasNext()); |
| 123 | + Binding first = iterator.next(); |
| 124 | + assertNotNull(first); |
| 125 | + assertTrue(iterator.hasNext()); |
| 126 | + Binding alt = iterator.next(); |
| 127 | + assertNotNull(alt); |
| 128 | + assertEquals("alt", alt.getName()); |
| 129 | + assertTrue(iterator.hasNext()); |
| 130 | + Binding bag = iterator.next(); |
| 131 | + assertNotNull(bag); |
| 132 | + assertEquals("bag", bag.getName()); |
| 133 | + assertFalse(iterator.hasNext()); |
| 134 | + try { |
| 135 | + iterator.next(); |
| 136 | + fail("There are no more elements"); |
| 137 | + } catch (NoSuchElementException e) { |
| 138 | + assertNotNull(e); |
| 139 | + } |
| 140 | + } |
| 141 | + |
| 142 | + @Test |
| 143 | + public void testThreeWithTwoElementsSetIterator() { |
| 144 | + ArrayBindingSet bs = new ArrayBindingSet("first", "alt", "bag"); |
| 145 | + bs.setBinding("first", RDF.FIRST); |
| 146 | + bs.setBinding("bag", RDF.BAG); |
| 147 | + Iterator<Binding> iterator = bs.iterator(); |
| 148 | + assertNotNull(iterator); |
| 149 | + assertTrue(iterator.hasNext()); |
| 150 | + Binding first = iterator.next(); |
| 151 | + assertNotNull(first); |
| 152 | + assertTrue(iterator.hasNext()); |
| 153 | + Binding bag = iterator.next(); |
| 154 | + assertNotNull(bag); |
| 155 | + assertEquals("bag", bag.getName()); |
| 156 | + assertFalse(iterator.hasNext()); |
| 157 | + try { |
| 158 | + iterator.next(); |
| 159 | + fail("There are no more elements"); |
| 160 | + } catch (NoSuchElementException e) { |
| 161 | + assertNotNull(e); |
| 162 | + } |
| 163 | + } |
80 | 164 | }
|
0 commit comments