Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.67 KB | None | 0 0
  1. package nl.np.util;
  2.  
  3. import static junit.framework.Assert.assertEquals;
  4.  
  5. import java.text.SimpleDateFormat;
  6. import java.util.ArrayList;
  7. import java.util.Calendar;
  8. import java.util.Date;
  9. import java.util.List;
  10.  
  11. import org.junit.Ignore;
  12. import org.junit.Test;
  13.  
  14. public class DateUtilTest {
  15.     private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  16.  
  17.     @Ignore
  18.     @Test
  19.     public void testCalculateWeekNumber() {
  20.         Calendar dec282015 = initDate(28, Calendar.DECEMBER, 2015);
  21.         int dec282015WeekNumber = DateUtil.calculateWeekNumber(dec282015);
  22.         // assertEquals(53, dec282015WeekNumber);
  23.  
  24.         Calendar firstJan2016 = initDate(1, Calendar.JANUARY, 2016);
  25.  
  26.         int firstJan2016WeekNumber = DateUtil.calculateWeekNumber(firstJan2016);
  27.         assertEquals(53, firstJan2016WeekNumber);
  28.  
  29.         Date now = new Date();
  30.         int todaysWeekNumber = DateUtil.calculateWeekNumber(now);
  31.     }
  32.  
  33.     private Calendar initDate(int date, int month, int year) {
  34.         Calendar dec282015 = Calendar.getInstance();
  35.         dec282015.set(Calendar.DATE, date);
  36.         dec282015.set(Calendar.MONTH, month);
  37.         dec282015.set(Calendar.YEAR, year);
  38.         return dec282015;
  39.     }
  40.  
  41.     @Ignore
  42.     @Test
  43.     public void testCalculateFirstThursdayOfYear() {
  44.         for(int year = 2000; year < 2026; year++) {
  45.             Date firstThursday = DateUtil.calculateFirstThursdayOfYear(year);
  46.             System.out.println(sdf.format(firstThursday));
  47.         }
  48.     }
  49.  
  50.     @Ignore
  51.     @Test
  52.     public void testFirstDayOfWeek() {
  53.         SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
  54.         for(int year = 2016; year < 2020; year++) {
  55.             for(int i = 0; i < 52; i++) {
  56.                 int week = i + 1;
  57.                 Date date = DateUtil.calculateFirstDayOfWeek(week, year);
  58.                 System.out.println(String.format("%d - %s", week, sdf.format(date)));
  59.             }
  60.             System.out.println("===");
  61.         }
  62.     }
  63.  
  64.     @Ignore
  65.     @Test
  66.     public void findPerfectNumber() {
  67.         int max = 25000000;
  68.         findPerfectNumbers(max);
  69.     }
  70.  
  71.     private void findPerfectNumbers(int max) {
  72.         for(int i = 2; i <= max; i++) {
  73.             if(isPerfect(i)) {
  74.                 System.out.println(i);
  75.             }
  76.         }
  77.     }
  78.  
  79.     private boolean isPerfect(int i) {
  80.         List<Integer> dividers = findDividers(i);
  81.         int sumDividers = calculateSum(dividers);
  82.         return sumDividers == i;
  83.     }
  84.  
  85.     private List<Integer> findDividers(int number) {
  86.         List<Integer> dividers = new ArrayList<Integer>();
  87.         for(int i = 1; i <= number / 2; i++) {
  88.             if(number % i == 0) {
  89.                 dividers.add(i);
  90.             }
  91.         }
  92.         return dividers;
  93.     }
  94.  
  95.     private int calculateSum(List<Integer> dividers) {
  96.         int sum = 0;
  97.         for(int div : dividers) {
  98.             sum += div;
  99.         }
  100.         return sum;
  101.     }
  102.  
  103.     @Ignore
  104.     @Test
  105.     public void twoToTheEleventh() {
  106.         int[] numbers = { 4, 8, 32, 128, 2048, 8192 };
  107.         for(int number : numbers) {
  108.             int product = (number / 2) * (number - 1);
  109.             System.out.println(product);
  110.             System.out.println("Perfect? " + isPerfect(product));
  111.         }
  112.     }
  113.  
  114.     @Test
  115.     public void highestComposite() {
  116.         int oldFactorsLength = 0;
  117.         for(int number = 1; number <= 32768; number++) {
  118.             // int number = 5040;
  119.             List<Integer> factors = findFactors(number);
  120.             if(factors.size() > oldFactorsLength) {
  121.                 logFactors(number, factors);
  122.                 oldFactorsLength = factors.size();
  123.             }
  124.         }
  125.     }
  126.  
  127.     private List<Integer> findFactors(int number) {
  128.         List<Integer> factors = new ArrayList<Integer>();
  129.         for(int i = 1; i <= number / 2; i++) {
  130.             if(number % i == 0) {
  131.                 factors.add(i);
  132.             }
  133.         }
  134.         return factors;
  135.     }
  136.  
  137.     private void logFactors(int number, List<Integer> factors) {
  138.         StringBuilder sb = new StringBuilder();
  139.         sb.append("Factors (").append(number).append(") [").append(factors.size()).append("] =");
  140.         for(int factor : factors) {
  141.             sb.append(" ").append(factor);
  142.         }
  143.         System.out.println(sb.toString());
  144.     }
  145.  
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement