Skip to content

testing: improve test coverage StackOfLinkedListTest #6430

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 24, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,104 @@ public void testSequentialPushAndPop() {
}
assertTrue(stack.isEmpty(), "Stack should be empty after popping all elements");
}

@Test
public void testPushZeroAndNegativeValues() {
stack.push(0);
stack.push(-1);
stack.push(-1);

assertEquals(-1, stack.pop(), "Should handle negative values correctly");
assertEquals(-1, stack.pop(), "Should handle negative values correctly");
assertEquals(0, stack.pop(), "Should handle zero value correctly");
}

@Test
public void testPushDuplicateValues() {
stack.push(1);
stack.push(1);
stack.push(1);

assertEquals(3, stack.getSize(), "Should allow duplicate values");
assertEquals(1, stack.pop());
assertEquals(1, stack.pop());
assertEquals(1, stack.pop());
}

@Test
public void testPushAfterEmptyingStack() {
stack.push(1);
stack.push(2);
stack.pop();
stack.pop();

assertTrue(stack.isEmpty(), "Stack should be empty");

stack.push(10);
assertEquals(10, stack.peek(), "Should work correctly after emptying and refilling");
assertEquals(1, stack.getSize(), "Size should be correct after refilling");
}

@Test
public void testPeekDoesNotModifyStack() {
stack.push(1);

int firstPeek = stack.peek();
int secondPeek = stack.peek();
int thirdPeek = stack.peek();

assertEquals(firstPeek, secondPeek, "Multiple peeks should return same value");
assertEquals(secondPeek, thirdPeek, "Multiple peeks should return same value");
assertEquals(1, stack.getSize(), "Peek should not modify stack size");
assertEquals(1, stack.pop(), "Element should still be poppable after peeking");
}

@Test
public void testAlternatingPushAndPop() {
stack.push(1);
assertEquals(1, stack.pop());

stack.push(2);
stack.push(3);
assertEquals(3, stack.pop());

stack.push(4);
assertEquals(4, stack.pop());
assertEquals(2, stack.pop());

assertTrue(stack.isEmpty(), "Stack should be empty after alternating operations");
}

@Test
public void testToStringWithSingleElement() {
stack.push(42);
assertEquals("42", stack.toString(), "String representation with single element should not have arrows");
}

@Test
public void testStackIntegrity() {
// Test that internal state remains consistent
for (int i = 0; i < 10; i++) {
stack.push(i);
assertEquals(i + 1, stack.getSize(), "Size should be consistent during pushes");
assertEquals(i, stack.peek(), "Peek should return last pushed value");
}

for (int i = 9; i >= 0; i--) {
assertEquals(i, stack.peek(), "Peek should return correct value before pop");
assertEquals(i, stack.pop(), "Pop should return values in LIFO order");
assertEquals(i, stack.getSize(), "Size should be consistent during pops");
}
}

@Test
public void testMixedDataTypes() {
// If your stack supports Object types, test with different data types

stack.push(1);
stack.push(2);

assertEquals(Integer.valueOf(2), stack.pop());
assertEquals(Integer.valueOf(1), stack.pop());
}
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy