Skip to content

Commit 3b982fb

Browse files
committed
use new small composites test for Squfof variants
1 parent d270173 commit 3b982fb

File tree

3 files changed

+39
-21
lines changed

3 files changed

+39
-21
lines changed

src/test/java/de/tilman_neumann/jml/factor/squfof/SquFoF31PreloadTest.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
import static org.junit.Assert.fail;
1818

1919
import java.math.BigInteger;
20+
import java.util.List;
2021

2122
import org.apache.logging.log4j.LogManager;
2223
import org.apache.logging.log4j.Logger;
2324
import org.junit.BeforeClass;
2425
import org.junit.Test;
2526

2627
import de.tilman_neumann.jml.factor.FactorAlgorithm;
28+
import de.tilman_neumann.jml.factor.FactorTestInfrastructure;
2729
import de.tilman_neumann.jml.factor.TestNumberNature;
2830
import de.tilman_neumann.jml.factor.TestsetGenerator;
2931
import de.tilman_neumann.util.ConfigUtil;
@@ -33,14 +35,18 @@ public class SquFoF31PreloadTest {
3335

3436
private static final Logger LOG = LogManager.getLogger(SquFoF31PreloadTest.class);
3537

36-
private static SquFoF31Preload squfof31;
37-
private static FactorAlgorithm testFactorizer;
38+
private static final SquFoF31Preload squfof = new SquFoF31Preload();
39+
private static final FactorAlgorithm verificationFactorizer = FactorAlgorithm.getDefault();
3840

3941
@BeforeClass
4042
public static void setup() {
4143
ConfigUtil.initProject();
42-
squfof31 = new SquFoF31Preload();
43-
testFactorizer = FactorAlgorithm.getDefault();
44+
}
45+
46+
@Test
47+
public void testSmallestComposites() {
48+
List<Integer> fails = FactorTestInfrastructure.testSmallComposites(100000, squfof);
49+
assertEquals("Failed to factor n = " + fails, 0, fails.size());
4450
}
4551

4652
@Test
@@ -61,9 +67,9 @@ public void testRandomComposites() {
6167
for (int i=0; i<count; i++) {
6268
BigInteger NBig = testNumbers[i];
6369
long N = NBig.longValue();
64-
long squfofFactor = squfof31.findSingleFactor(N);
70+
long squfofFactor = squfof.findSingleFactor(N);
6571
if (squfofFactor < 2) {
66-
long correctFactor = testFactorizer.findSingleFactor(NBig).longValue();
72+
long correctFactor = verificationFactorizer.findSingleFactor(NBig).longValue();
6773
if (correctFactor > 1 && correctFactor<N) {
6874
LOG.debug("N=" + N + ": SquFoF31Preload failed to find factor " + correctFactor);
6975
failCount++;
@@ -85,7 +91,7 @@ public void testRandomComposites() {
8591
private void assertFactorizationSuccess(long N, String expectedPrimeFactorizationStr) {
8692
BigInteger NBig = BigInteger.valueOf(N);
8793
LOG.info("Test " + N + " (" + NBig.bitLength() + " bit)");
88-
SortedMultiset<BigInteger> factors = squfof31.factor(NBig);
94+
SortedMultiset<BigInteger> factors = squfof.factor(NBig);
8995
LOG.info(N + " = " + factors.toString("*", "^"));
9096
assertEquals(expectedPrimeFactorizationStr, factors.toString("*", "^"));
9197
}

src/test/java/de/tilman_neumann/jml/factor/squfof/SquFoF31Test.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
import static org.junit.Assert.fail;
1818

1919
import java.math.BigInteger;
20+
import java.util.List;
2021

2122
import org.apache.logging.log4j.LogManager;
2223
import org.apache.logging.log4j.Logger;
2324
import org.junit.BeforeClass;
2425
import org.junit.Test;
2526

2627
import de.tilman_neumann.jml.factor.FactorAlgorithm;
28+
import de.tilman_neumann.jml.factor.FactorTestInfrastructure;
2729
import de.tilman_neumann.jml.factor.TestNumberNature;
2830
import de.tilman_neumann.jml.factor.TestsetGenerator;
2931
import de.tilman_neumann.util.ConfigUtil;
@@ -33,14 +35,18 @@ public class SquFoF31Test {
3335

3436
private static final Logger LOG = LogManager.getLogger(SquFoF31Test.class);
3537

36-
private static SquFoF31 squfof31;
37-
private static FactorAlgorithm testFactorizer;
38+
private static final SquFoF31 squfof = new SquFoF31();
39+
private static final FactorAlgorithm verificationFactorizer = FactorAlgorithm.getDefault();
3840

3941
@BeforeClass
4042
public static void setup() {
4143
ConfigUtil.initProject();
42-
squfof31 = new SquFoF31();
43-
testFactorizer = FactorAlgorithm.getDefault();
44+
}
45+
46+
@Test
47+
public void testSmallestComposites() {
48+
List<Integer> fails = FactorTestInfrastructure.testSmallComposites(100000, squfof);
49+
assertEquals("Failed to factor n = " + fails, 0, fails.size());
4450
}
4551

4652
@Test
@@ -61,9 +67,9 @@ public void testRandomComposites() {
6167
for (int i=0; i<count; i++) {
6268
BigInteger NBig = testNumbers[i];
6369
long N = NBig.longValue();
64-
long squfofFactor = squfof31.findSingleFactor(N);
70+
long squfofFactor = squfof.findSingleFactor(N);
6571
if (squfofFactor < 2) {
66-
long correctFactor = testFactorizer.findSingleFactor(NBig).longValue();
72+
long correctFactor = verificationFactorizer.findSingleFactor(NBig).longValue();
6773
if (correctFactor > 1 && correctFactor<N) {
6874
LOG.debug("N=" + N + ": SquFoF31 failed to find factor " + correctFactor);
6975
failCount++;
@@ -85,7 +91,7 @@ public void testRandomComposites() {
8591
private void assertFactorizationSuccess(long N, String expectedPrimeFactorizationStr) {
8692
BigInteger NBig = BigInteger.valueOf(N);
8793
LOG.info("Test " + N + " (" + NBig.bitLength() + " bit)");
88-
SortedMultiset<BigInteger> factors = squfof31.factor(NBig);
94+
SortedMultiset<BigInteger> factors = squfof.factor(NBig);
8995
LOG.info(N + " = " + factors.toString("*", "^"));
9096
assertEquals(expectedPrimeFactorizationStr, factors.toString("*", "^"));
9197
}

src/test/java/de/tilman_neumann/jml/factor/squfof/SquFoF63Test.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
import static org.junit.Assert.fail;
1818

1919
import java.math.BigInteger;
20+
import java.util.List;
2021

2122
import org.apache.logging.log4j.LogManager;
2223
import org.apache.logging.log4j.Logger;
2324
import org.junit.BeforeClass;
2425
import org.junit.Test;
2526

2627
import de.tilman_neumann.jml.factor.FactorAlgorithm;
28+
import de.tilman_neumann.jml.factor.FactorTestInfrastructure;
2729
import de.tilman_neumann.jml.factor.TestNumberNature;
2830
import de.tilman_neumann.jml.factor.TestsetGenerator;
2931
import de.tilman_neumann.util.ConfigUtil;
@@ -35,14 +37,18 @@ public class SquFoF63Test {
3537

3638
private static final Logger LOG = LogManager.getLogger(SquFoF63Test.class);
3739

38-
private static SquFoF63 squfof63;
39-
private static FactorAlgorithm testFactorizer;
40+
private static final SquFoF63 squfof = new SquFoF63();
41+
private static final FactorAlgorithm verificationFactorizer = FactorAlgorithm.getDefault();
4042

4143
@BeforeClass
4244
public static void setup() {
4345
ConfigUtil.initProject();
44-
squfof63 = new SquFoF63();
45-
testFactorizer = FactorAlgorithm.getDefault();
46+
}
47+
48+
@Test
49+
public void testSmallestComposites() {
50+
List<Integer> fails = FactorTestInfrastructure.testSmallComposites(100000, squfof);
51+
assertEquals("Failed to factor n = " + fails, 0, fails.size());
4652
}
4753

4854
@Test
@@ -74,9 +80,9 @@ private void testRange(int minBits, int maxBits, int count) {
7480
int failCount = 0;
7581
for (int i=0; i<count; i++) {
7682
BigInteger N = testNumbers[i];
77-
BigInteger squfofFactor = squfof63.findSingleFactor(N);
83+
BigInteger squfofFactor = squfof.findSingleFactor(N);
7884
if (squfofFactor.compareTo(I_1) <= 0) {
79-
BigInteger correctFactor = testFactorizer.findSingleFactor(N);
85+
BigInteger correctFactor = verificationFactorizer.findSingleFactor(N);
8086
if (correctFactor.compareTo(I_1)>0 && correctFactor.compareTo(N)<0) {
8187
LOG.debug("N=" + N + ": SquFoF63 failed to find factor " + correctFactor);
8288
failCount++;
@@ -98,7 +104,7 @@ private void testRange(int minBits, int maxBits, int count) {
98104
private void assertFactorizationSuccess(long N, String expectedPrimeFactorizationStr) {
99105
BigInteger NBig = BigInteger.valueOf(N);
100106
LOG.info("Test " + N + " (" + NBig.bitLength() + " bit)");
101-
SortedMultiset<BigInteger> factors = squfof63.factor(NBig);
107+
SortedMultiset<BigInteger> factors = squfof.factor(NBig);
102108
LOG.info(N + " = " + factors.toString("*", "^"));
103109
assertEquals(expectedPrimeFactorizationStr, factors.toString("*", "^"));
104110
}

0 commit comments

Comments
 (0)