-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrecursionTest.java
More file actions
85 lines (71 loc) · 6.22 KB
/
recursionTest.java
File metadata and controls
85 lines (71 loc) · 6.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.math.BigInteger;
import java.util.Arrays;
import org.junit.Test;
public class recursionTest {
@Test(expected = AssertionError.class)
public void testAssertionEnabled() {
assert false; // make sure assertions are enabled with VM argument: -ea
}
@Test
public void testFibSmall() {
assertEquals(recursion.fib(5), 5);
assertEquals(recursion.fib(10), 55);
assertEquals(12586269025L, recursion.longFib(50));
}
@Test
public void testBetterFib() {
// too large
// BigInteger f9840 = new BigInteger("12271426701043293884711025741063138514192755614272145902941244479482094040529953202060090842816904741721335541328003891278155708145528747234243881119274578716364935590179011804777872519187299012318565669805715509302556931020295527081647882788701169703030138556600098691536352601481067729861977694921574535068929461096093590691037613687566944527619975805837190037054772491125780973715637234821633474729509226619128984603519276987429477344252934716692277046930090527934343317595778474596467094919913253754493346457530163763676532428921078717983263910856859726020840841625661390522862144667110756510161470310634192973984907584794860090305081310248693343056115750047467406953127278118110417942349455633177270899064476266820482048999010542232611946325949428264642772438307259633212566871483640437654977897244202287416774088461018849486157560249346381495354820127030549629922436829378163635795122476213618602203583463890488675868817025029458379252062131011310877641740381545425097059502232236502725756136290803099834232037184481692626912052255975055479831980148226788187551188559670663921301386280112279527406371058143030217787335497395897189573247961098994980845922622988393660642384194442332954792596671090939447641497270485513515655217194088573152412227053701636487438559027953163250946422279169391416196442262494226233318106076257555240496698717305142404020629869314524736477553134551773291382046471918894619076084979444577532343030542132355294778250238524376084782913591963336280478561445355121158994561522785779411253382502489477827555441937935781933606749512392605246835465515515962594516326966868618654972113746252688130394405231279458211368334571917656039083643808274403063505957816192058182936538483954133761729345102350087381206603042974599418077456118739614538864781578568417357378681916791568092759078312857656953324278754088278794716446030918004025887058464013497168259172946266727807165866628655123728984743365149860390551712972052113446005441933922710707368725067038408511668343664015350613035009502333827185748959422493835316708636299858312770880");
// assertEquals(f9840, Recursion.betterFib(9840));
/*
* f9000 and f9840 are from online source:
* http://php.bubble.ro/fibonacci/
*/
BigInteger f9000 = new BigInteger("346160291286684746313289272940653195821004938840574649197792354882626761451249209476688158830845438584081783077248969641036805567685925275096026379667053520731117017902152350004056055263290740468312565519013758527115134986679500927618960595898784125436743322890902556558480966166842068858827121368084037500398689666218044551350360442646862696279483129043660912539980584260616428129687853518243358544506024804211410314325692133398509706576596745187284000675448960566587838629300214068490071678112576561242120168921521062906855593650494011391615760506296564726181583639595605639315514462323593255726350681177298919692687529131475966996479175735276726414564038873951028105275764984412066591637415934772279139455253087288034009154993561193308269619883651016764739580528775882659332284075160900251889565909001620005955898020498741253426259183467407856451935255744598735677063143605951074135853992415938277666700535092854704966755528337679057697026202081967337389133151551900992563506110333584028337592625787023110008351289364452178195306107056259768301902940710358705695173401175797592063874235214258319794748258830812224447883759078743189231351248058057742818858083652751310389157188583652487191753681908871324452598859106144951594606797195786754559141129782727790928218793262000601818878041232712620482141748965030717911922256234544033929372196985105014830841771293541916105669494308393067698504542986022441130160781328108216014215621166500631310190198456977407701085658980743316402172456165191576635035885104241740897029972735571913355609051794588175072614073380279274977928339443177725603335698391914343325635814053921690136602830888930385122496970174170881935462763316271613842866892088329627160809282789447665993788904319486227140536689107577971883772835153070545678359828373104418268785375257487856252266909918112168299229852218195022374231040315139836301079422737682650129388000");
assertEquals(f9000, recursion.betterFib(9000));
}
@Test
public void testSums() {
assertTrue(Recursion.makeAllSums(3).containsAll(Arrays.asList(0, 3, 2, 5, 1, 4, 3, 6)));
}
private final double tolerance = 0.00001;
/* Recursive Sqrt
* Testing Strategy: n = 0, 0 < n < 1, n = 1, n < 1
*
* Each part covered by at least one case below
*/
@Test
public void testZero() {
double n = 0;
assertEquals(recursion.sqrt(n), Math.sqrt(n), tolerance * n);
}
@Test
public void testOne() {
double n = 1;
assertEquals(recursion.sqrt(n), Math.sqrt(n), tolerance * n);
}
@Test
public void testLessThanOne() {
double[] nums = new double[] { 0.99999, 0.5, 0.1, 0.08, 0.05, 0.01, 0.0006, 0.00047, 0.25641, 0.0000006 };
for (double n : nums) {
assertEquals(recursion.sqrt(n), Math.sqrt(n), tolerance * n);
}
}
@Test
public void testGreaterThanOne() {
double[] nums = new double[] { 4, 8, 10, 12, 14, 16, 17, 15, 240, 865, 100, 50, 25 };
for (double n : nums) {
assertEquals(recursion.sqrt(n), Math.sqrt(n), tolerance * n);
}
}
@Test
public void testLargeN() {
double[] nums = new double[] { 100000000, 50000000, 46745425657464.667645, 123456789.10,
546454545.79867787e10 };
for (double n : nums) {
assertEquals(recursion.sqrt(n), Math.sqrt(n), tolerance * n);
}
}
}