Advertisement
JeffGrigg

FibonacciTest

Nov 16th, 2018
586
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 4.14 KB | None | 0 0
  1. import junit.framework.TestCase;
  2.  
  3. public class FibonacciTest extends TestCase {
  4.  
  5.     private long fib(final int index) {
  6.         final long[] prevTwo = previousTwoFibonacciNumbers(index);
  7.         assertEquals(2, prevTwo.length);
  8.         return prevTwo[0] + prevTwo[1];
  9.     }
  10.  
  11.     private long[] previousTwoFibonacciNumbers(final int index) {
  12.         switch (index) {
  13.             case 0:
  14.                 return new long[]{0, 0};
  15.             case 1:
  16.             case 2:
  17.                 return new long[]{0, 1};
  18.             default:
  19.                 final long[] prevTwo = previousTwoFibonacciNumbers(index - 1);
  20.                 return new long[]{prevTwo[1], prevTwo[0] + prevTwo[1]};
  21.         }
  22.     }
  23.  
  24.     public void test0() {
  25.         assertEquals(0, fib(0));
  26.     }
  27.  
  28.     public void test1() {
  29.         assertEquals(1, fib(1));
  30.     }
  31.  
  32.     public void test2() {
  33.         assertEquals(1, fib(2));
  34.     }
  35.  
  36.     public void test3() {
  37.         assertEquals(2, fib(3));
  38.     }
  39.  
  40.     public void test4() {
  41.         assertEquals(3, fib(4));
  42.     }
  43.  
  44.     public void test5() {
  45.         assertEquals(5, fib(5));
  46.     }
  47.  
  48.     public void test6() {
  49.         assertEquals(8, fib(6));
  50.     }
  51.  
  52.     public void testX() {
  53.         final long[] values = new long[]{
  54.                 0L,
  55.                 1L,
  56.                 1L,
  57.                 2L,
  58.                 3L,
  59.                 5L,
  60.                 8L,
  61.                 13L,
  62.                 21L,
  63.                 34L,
  64.                 55L,
  65.                 89L,
  66.                 144L,
  67.                 233L,
  68.                 377L,
  69.                 610L,
  70.                 987L,
  71.                 1597L,
  72.                 2584L,
  73.                 4181L,
  74.                 6765L,
  75.                 10946L,
  76.                 17711L,
  77.                 28657L,
  78.                 46368L,
  79.                 75025L,
  80.                 121393L,
  81.                 196418L,
  82.                 317811L,
  83.                 514229L,
  84.                 832040L,
  85.                 1346269L,
  86.                 2178309L,
  87.                 3524578L,
  88.                 5702887L,
  89.                 9227465L,
  90.                 14930352L,
  91.                 24157817L,
  92.                 39088169L,
  93.                 63245986L,
  94.                 102334155L,
  95.                 165580141L,
  96.                 267914296L,
  97.                 433494437L,
  98.                 701408733L,
  99.                 1134903170L,
  100.                 1836311903L,
  101.                 2971215073L,
  102.                 4807526976L,
  103.                 7778742049L,
  104.                 12586269025L,
  105.                 20365011074L,
  106.                 32951280099L,
  107.                 53316291173L,
  108.                 86267571272L,
  109.                 139583862445L,
  110.                 225851433717L,
  111.                 365435296162L,
  112.                 591286729879L,
  113.                 956722026041L,
  114.                 1548008755920L,
  115.                 2504730781961L,
  116.                 4052739537881L,
  117.                 6557470319842L,
  118.                 10610209857723L,
  119.                 17167680177565L,
  120.                 27777890035288L,
  121.                 44945570212853L,
  122.                 72723460248141L,
  123.                 117669030460994L,
  124.                 190392490709135L,
  125.                 308061521170129L,
  126.                 498454011879264L,
  127.                 806515533049393L,
  128.                 1304969544928657L,
  129.                 2111485077978050L,
  130.                 3416454622906707L,
  131.                 5527939700884757L,
  132.                 8944394323791464L,
  133.                 14472334024676221L,
  134.                 23416728348467685L,
  135.                 37889062373143906L,
  136.                 61305790721611591L,
  137.                 99194853094755497L,
  138.                 160500643816367088L,
  139.                 259695496911122585L,
  140.                 420196140727489673L,
  141.                 679891637638612258L,
  142.                 1100087778366101931L,
  143.                 1779979416004714189L,
  144.                 2880067194370816120L,
  145.                 4660046610375530309L,
  146.                 7540113804746346429L
  147.         };
  148.         int index = 0;
  149.         for (long value : values) {
  150.             assertEquals("fib(" + index + ")", value, fib(index));
  151.             ++index;
  152.         }
  153.     }
  154.  
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement