Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. package ee.ttu.algoritmid.dancers;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.nio.file.Files;
  8. import java.nio.file.Path;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11.  
  12. import static ee.ttu.algoritmid.dancers.Dancer.Gender.MALE;
  13.  
  14. public class Main {
  15.  
  16. public static void main(String[] args) {
  17. List<Dancer> requests = new ArrayList<>();
  18. List<Integer> responds = new ArrayList<>();
  19. BufferedReader reader;
  20. try {
  21. reader = new BufferedReader(new FileReader("filename.txt"));
  22. String line = reader.readLine();
  23. while (line != null) {
  24. String[] splited = line.split("\\s+");
  25. requests.add(new DancerImpl(splited[0], Dancer.Gender.valueOf(splited[1]), Integer.parseInt(splited[2])));
  26. responds.add(splited[3].equals("null") ? null : Integer.parseInt(splited[3]));
  27. line = reader.readLine();
  28. }
  29. reader.close();
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. }
  33.  
  34. testTreeEndToEnd(requests, responds);
  35. }
  36.  
  37. private static void testTreeEndToEnd(List<Dancer> requests, List<Integer> responds) {
  38. HW01 solution = new HW01();
  39. List<String> results = new ArrayList<>();
  40. int wrong = 0;
  41. int correct = 0;
  42.  
  43. for (int i = 0; i < requests.size(); i++) {
  44. String result = testRequestResponse(solution, requests.get(i), responds.get(i));
  45. if (!result.isEmpty()) {
  46. results.add(result);
  47. wrong++;
  48. } else {
  49. correct++;
  50. }
  51. }
  52. // writeLog(results);
  53. System.out.println("Correct: " + correct);
  54. System.out.println("Wrong: " + wrong);
  55. }
  56.  
  57.  
  58. private static String testRequestResponse(HW01 solution, Dancer dancer, Integer expectedPartnerHeight) {
  59. DancingCouple couple = solution.findPartnerFor(dancer);
  60. String message = null;
  61. Dancer partner = null;
  62.  
  63. if (couple == null) {
  64. if (expectedPartnerHeight != null) {
  65. message = "Partner wasn't found, but should have";
  66. }
  67. } else {
  68. partner = dancer.getGender() == MALE ? couple.getFemaleDancer() : couple.getMaleDancer();
  69. if (expectedPartnerHeight == null) {
  70. message = "Partner was found, but shouldn't have";
  71. } else {
  72. if (partner.getHeight() != expectedPartnerHeight) {
  73. message = "Partner of wrong height found";
  74. }
  75. }
  76. }
  77. if (message == null) {
  78. return "";
  79. }
  80. // StringBuilder builder = new StringBuilder();
  81. // builder.append("Find for: " + dancer.getGender() + ", " + dancer.getHeight() + " -> " + expectedPartnerHeight);
  82. // builder.append("\nPartner: " + (partner == null ? null : partner.getGender() + " " + partner.getHeight()) + "\n");
  83. // builder.append("\nWaiting list after:\n");
  84. // solution.returnWaitingList().forEach(d -> builder.append("• " + d + "\n"));
  85. return "hello";
  86. }
  87.  
  88. private static void writeLog(List<String> results) {
  89. Path path = Path.of("log.txt");
  90. try (BufferedWriter writer = Files.newBufferedWriter(path)) {
  91. for (String line : results) {
  92. writer.write(line + "\n");
  93. }
  94. } catch (IOException ignored) { }
  95. }
  96.  
  97. /**
  98. * Implementation of the Dancer interface.
  99. * Made for testing purposes.
  100. */
  101. private static class DancerImpl implements Dancer {
  102. private String name;
  103. private Gender gender;
  104. private int height;
  105.  
  106. private DancerImpl(String name, Gender gender, int height) {
  107. this.name = name;
  108. this.gender = gender;
  109. this.height = height;
  110. }
  111.  
  112. @Override
  113. public String getName() {
  114. return name;
  115. }
  116.  
  117. @Override
  118. public Gender getGender() {
  119. return gender;
  120. }
  121.  
  122. @Override
  123. public int getHeight() {
  124. return height;
  125. }
  126.  
  127. @Override
  128. public String toString() {
  129. return "DancerImpl{" +
  130. "name='" + name + '\'' +
  131. ", gender=" + gender +
  132. ", height=" + height +
  133. '}';
  134. }
  135. }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement