Skip to content
Snippets Groups Projects
Commit c6ce4931 authored by MEDEDJI Setondji's avatar MEDEDJI Setondji :speech_balloon:
Browse files

Rendu final TP2

parent e95bd26e
No related branches found
No related tags found
No related merge requests found
...@@ -2,66 +2,108 @@ package arraydoubleendedqueue; ...@@ -2,66 +2,108 @@ package arraydoubleendedqueue;
import deque.DoubleEndedQueue; import deque.DoubleEndedQueue;
import java.util.NoSuchElementException;
public class ArrayDoubleEndedQueue<E> implements DoubleEndedQueue { public class ArrayDoubleEndedQueue<E> implements DoubleEndedQueue {
private Object[] elements; private Object[] elements;
private int size; private int size;
private int capacity; private int capacity;
private int indexFirst;
public ArrayDoubleEndedQueue(int capacity) { public ArrayDoubleEndedQueue(int capacity) {
this.capacity = capacity; this.capacity = capacity;
elements = new Object[capacity]; elements = new Object[capacity];
this.size = 0; this.size = 0;
this.indexFirst = 0;
} }
@Override @Override
public void addFirst(Object o) { public void addFirst(Object o) {
if(size < capacity) { if(size == capacity) {
elements[size] = o; throw new IllegalStateException("La queue est pleine");
size++;
} }
else { else {
throw new IllegalStateException("Queue is full"); elements[size] = o;
size++;
} }
} }
@Override @Override
public void addLast(Object o) { public void addLast(Object o) {
if(size < capacity) { if(size == capacity) {
elements[size] = o; throw new IllegalStateException("La queue est pleine");
size++;
} }
else { else {
throw new IllegalStateException("Queue is full"); elements[size] = o;
size++;
} }
} }
@Override @Override
public Object removeFirst() { public Object removeFirst() {
if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
Object removedElement = (Object) elements[indexFirst];
elements[indexFirst] = null;
indexFirst = (indexFirst + 1) % capacity;
size--;
return removedElement;
} }
@Override @Override
public Object removeLast() { public Object removeLast() {
return null; if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
int lastIndex = (indexFirst + size - 1) % capacity;
Object removedElement = (Object) elements[lastIndex];
elements[lastIndex] = null;
size--;
return removedElement;
} }
@Override @Override
public Object getFirst() { public Object getFirst() {
return null; if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
return (Object) elements[indexFirst];
} }
@Override @Override
public Object getLast() { public Object getLast() {
return null; if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
return (Object) elements[((indexFirst + size - 1) % capacity)];
} }
@Override @Override
public int size() { public int size() {
return 0; return size;
} }
@Override @Override
public boolean contains(Object o) { public boolean contains(Object o) {
if (o == null) {
for (int i = 0; i < size; i++) {
if (elements[(indexFirst + i) % capacity] == null) {
return true;
}
}
} else {
for (int i = 0; i < size; i++) {
if (o.equals(elements[(indexFirst + i) % capacity])) {
return true;
}
}
}
return false; return false;
} }
} }
...@@ -6,9 +6,14 @@ import org.junit.jupiter.api.Test; ...@@ -6,9 +6,14 @@ import org.junit.jupiter.api.Test;
import java.util.Deque; import java.util.Deque;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class ArrayDoubleEndedQueueTest { public class ArrayDoubleEndedQueueTest {
static Deque<Integer> ArrayDoubleEndedQueue; static ArrayDoubleEndedQueue<Integer> arrayDoubleEndedQueue;
static ArrayDoubleEndedQueue<Integer> queueVide;
@BeforeAll @BeforeAll
static void setUpBeforeClass() throws Exception { static void setUpBeforeClass() throws Exception {
System.out.println("Before all"); System.out.println("Before all");
...@@ -21,6 +26,9 @@ public class ArrayDoubleEndedQueueTest { ...@@ -21,6 +26,9 @@ public class ArrayDoubleEndedQueueTest {
@BeforeEach @BeforeEach
void setUp() throws Exception { void setUp() throws Exception {
arrayDoubleEndedQueue = new ArrayDoubleEndedQueue<>(10);
queueVide = new ArrayDoubleEndedQueue<>(10);
} }
@AfterEach @AfterEach
...@@ -30,46 +38,92 @@ public class ArrayDoubleEndedQueueTest { ...@@ -30,46 +38,92 @@ public class ArrayDoubleEndedQueueTest {
@Test @Test
void testAddFirst() { void testAddFirst() {
ArrayDoubleEndedQueue.addFirst(1); arrayDoubleEndedQueue.addFirst(1);
ArrayDoubleEndedQueue.addFirst(2); arrayDoubleEndedQueue.addFirst(2);
ArrayDoubleEndedQueue.addFirst(3); arrayDoubleEndedQueue.addFirst(3);
ArrayDoubleEndedQueue.addFirst(4); arrayDoubleEndedQueue.addFirst(4);
assertThat(ArrayDoubleEndedQueue.getFirst()).isEqualTo(1); arrayDoubleEndedQueue.addFirst(5);
arrayDoubleEndedQueue.addFirst(6);
arrayDoubleEndedQueue.addFirst(7);
assertThat(arrayDoubleEndedQueue.getFirst()).isEqualTo(1);
} }
@Test @Test
void testAddLast() { void testAddLast() {
ArrayDoubleEndedQueue.addLast(1); arrayDoubleEndedQueue.addLast(1);
ArrayDoubleEndedQueue.addLast(2); arrayDoubleEndedQueue.addLast(2);
ArrayDoubleEndedQueue.addLast(3); arrayDoubleEndedQueue.addLast(3);
ArrayDoubleEndedQueue.addLast(4); arrayDoubleEndedQueue.addLast(4);
assertThat(ArrayDoubleEndedQueue.getLast()).isEqualTo(4); assertThat(arrayDoubleEndedQueue.getLast()).isEqualTo(4);
} }
@Test @Test
void testRemoveFirst() { void testRemoveFirst() {
arrayDoubleEndedQueue.addLast('X');
arrayDoubleEndedQueue.addLast('Y');
assertEquals('X', arrayDoubleEndedQueue.removeFirst());
} }
@Test @Test
void testRemoveLast() { void testRemoveLast() {
arrayDoubleEndedQueue.addLast(1);
arrayDoubleEndedQueue.addLast(2);
arrayDoubleEndedQueue.addLast(3);
arrayDoubleEndedQueue.addFirst(4);
assertEquals(4, arrayDoubleEndedQueue.removeLast());
} }
@Test @Test
void testGetFirst() { void testGetFirst() {
arrayDoubleEndedQueue.addLast(10);
assertEquals(10, arrayDoubleEndedQueue.getFirst());
} }
@Test @Test
void testGetLast() { void testGetLast() {
arrayDoubleEndedQueue.addLast(10);
assertEquals(10, arrayDoubleEndedQueue.getLast());
} }
@Test @Test
void testSize() { void testSize() {
arrayDoubleEndedQueue.addLast(10);
arrayDoubleEndedQueue.addLast(11);
arrayDoubleEndedQueue.addLast(12);
arrayDoubleEndedQueue.addLast(13);
arrayDoubleEndedQueue.addLast(14);
arrayDoubleEndedQueue.addLast(15);
arrayDoubleEndedQueue.addLast(16);
arrayDoubleEndedQueue.addLast(19);
assertEquals(8, arrayDoubleEndedQueue.size());
} }
@Test @Test
void testContains() { void testContains() {
arrayDoubleEndedQueue.addLast(10);
arrayDoubleEndedQueue.addLast(11);
arrayDoubleEndedQueue.addLast(12);
arrayDoubleEndedQueue.addLast(13);
arrayDoubleEndedQueue.addLast(14);
arrayDoubleEndedQueue.addLast(15);
arrayDoubleEndedQueue.addLast(16);
arrayDoubleEndedQueue.addLast(19);
assertTrue(arrayDoubleEndedQueue.contains(10));
assertEquals(false, arrayDoubleEndedQueue.contains(20));
assertEquals(false, arrayDoubleEndedQueue.contains(null));
queueVide.addLast(null);
System.out.println(queueVide.getFirst());
assertEquals(true, queueVide.contains(null));
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment