This repository has been archived on 2020-08-02. You can view files and clone it, but cannot push or open issues or pull requests.
e-commerce/prototype/src/test/java/org/hso/ecommerce/action/shop/GetRandomArticlesTest.java

42 lines
1.1 KiB
Java

package org.hso.ecommerce.action.shop;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.hso.ecommerce.entities.shop.Article;
import org.junit.jupiter.api.Test;
class GetRandomArticlesTest {
@Test
void test() {
List<Article> articles = new ArrayList<>();
for (int i = 0; i < 10 ; i++) {
Article article = new Article();
article.id = i;
articles.add(article);
}
int[] counters = new int[10];
// Choose 10000 times 3 articles out of 10
for (int i = 0; i < 10_000; i++) {
List<Article> chosen = GetRandomArticlesAction.getRandomArticles(3, new ArrayList<>(articles));
assertEquals(3, chosen.size());
for (Article chosenArticle : chosen) {
counters[(int) chosenArticle.id]++;
}
}
// Expect each article to be chosen 2400 - 3600 times.
// The probability for this test to fail randomly is below 10^-36
for (int counterValue : counters) {
assertTrue(counterValue >= 2400);
assertTrue(counterValue <= 3600);
}
}
}