Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

testing: improving CountSinglyLinkedListRecursionTest#6413

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
alxkm wants to merge1 commit intoTheAlgorithms:master
base:master
Choose a base branch
Loading
fromalxkm:testing/CountSinglyLinkedListRecursionTest
Open
Changes fromall 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 numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
package com.thealgorithms.datastructures.lists;

import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

public class CountSinglyLinkedListRecursionTest {
Expand All@@ -15,70 +17,112 @@ public void setUp() {
}

@Test
@DisplayName("Count of an empty list should be 0")
public void testCountEmptyList() {
// An empty list should have a count of 0
assertEquals(0, list.count(), "Count of an empty list should be 0.");
assertEquals(0, list.count());
}

@Test
@DisplayName("Count after inserting a single element should be 1")
public void testCountSingleElementList() {
// Insert a single element and check the count
list.insert(1);
assertEquals(1, list.count(), "Count of a single-element list should be 1.");
assertEquals(1, list.count());
}

@Test
@DisplayName("Count after inserting multiple distinct elements")
public void testCountMultipleElements() {
// Insert multiple elements and check the count
for (int i = 1; i <= 5; i++) {
list.insert(i);
}
assertEquals(5, list.count(), "Count of a list with 5 elements should be 5.");
assertEquals(5, list.count());
}

@Test
@DisplayName("Count should reflect total number of nodes with duplicate values")
public void testCountWithDuplicateElements() {
// Insert duplicate elements and verify the count is correct
list.insert(1);
list.insert(2);
list.insert(2);
list.insert(3);
list.insert(3);
assertEquals(5, list.count(), "Count of a list with duplicate elements should match total node count.");
list.insert(1);
assertEquals(5, list.count());
}

@Test
@DisplayName("Count should return 0 after clearing the list")
public void testCountAfterClearingList() {
for (int i = 1; i <= 4; i++) {
list.insert(i);
}
list.clear(); //assuming you have a clear method; if not, skip this
assertEquals(0, list.count(), "Count after clearing the list should be 0.");
list.clear(); //assumed to exist
assertEquals(0, list.count());
}

@Test
@DisplayName("Count on a very large list should be accurate")
public void testCountOnVeryLargeList() {
int n = 1000;
for (int i = 0; i < n; i++) {
list.insert(i);
}
assertEquals(n, list.count(), "Count should correctly return for large list sizes.");
assertEquals(n, list.count());
}

@Test
@DisplayName("Count should work correctly with negative values")
public void testCountOnListWithNegativeNumbers() {
list.insert(-1);
list.insert(-5);
list.insert(-10);
assertEquals(3, list.count(), "Count should correctly handle negative values.");
list.insert(-2);
list.insert(-3);
assertEquals(3, list.count());
}

@Test
@DisplayName("Calling count multiple times should return the same value if list is unchanged")
public void testCountIsConsistentWithoutModification() {
list.insert(1);
list.insert(2);
int firstCount = list.count();
int secondCount = list.count();
assertEquals(firstCount, secondCount, "Repeated count calls should return consistent values.");
int count1 = list.count();
int count2 = list.count();
assertEquals(count1, count2);
}

@Test
@DisplayName("Count should reflect total even if all values are the same")
public void testCountAllSameValues() {
for (int i = 0; i < 5; i++) {
list.insert(42);
}
assertEquals(5, list.count());
}

@Test
@DisplayName("Count should remain correct after multiple interleaved insert and count operations")
public void testCountAfterEachInsert() {
assertEquals(0, list.count());
list.insert(1);
assertEquals(1, list.count());
list.insert(2);
assertEquals(2, list.count());
list.insert(3);
assertEquals(3, list.count());
}

@Test
@DisplayName("List should not throw on edge count (0 nodes)")
public void testEdgeCaseNoElements() {
assertDoesNotThrow(() -> list.count());
}

@Test
@DisplayName("Should count accurately after inserting then removing all elements")
public void testCountAfterInsertAndClear() {
for (int i = 0; i < 10; i++) {
list.insert(i);
}
assertEquals(10, list.count());
list.clear();
assertEquals(0, list.count());
}
}

[8]ページ先頭

©2009-2025 Movatter.jp