Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.64 KB | None | 0 0
  1. ////VIRHE////
  2. FAIL: sec.helloinsert.HelloInsertTest testAddAgent
  3. NoSuchElementException
  4.  
  5. java.util.Scanner.throwFor(Scanner.java:862)
  6. java.util.Scanner.next(Scanner.java:1371)
  7. sec.helloinsert.HelloInsert.main(HelloInsert.java:50)
  8. sec.helloinsert.HelloInsertTest.testAddAgent(HelloInsertTest.java:59) sec.helloinsert.HelloInsertTest.testAddAgent(HelloInsertTest.java:44)
  9.  
  10.  
  11. HelloInsert.java:50 === statement.setString(2,name);
  12.  
  13. /////KOODI////
  14.  
  15. package sec.helloinsert;
  16.  
  17. import java.io.FileReader;
  18. import java.sql.Connection;
  19. import java.sql.DriverManager;
  20. import java.sql.PreparedStatement;
  21. import java.sql.ResultSet;
  22. import java.util.Scanner;
  23. import org.h2.tools.RunScript;
  24.  
  25. public class HelloInsert {
  26.  
  27. public static void main(String[] args) throws Exception {
  28. // Open connection to a database -- do not alter this code
  29. String databaseAddress = "jdbc:h2:file:./database";
  30. if (args.length > 0) {
  31. databaseAddress = args[0];
  32. }
  33.  
  34. Connection connection = DriverManager.getConnection(databaseAddress, "sa", "");
  35.  
  36. try {
  37. // If database has not yet been created, insert content
  38. RunScript.execute(connection, new FileReader("sql/database-schema.sql"));
  39. RunScript.execute(connection, new FileReader("sql/database-import.sql"));
  40. } catch (Throwable t) {
  41. System.err.println(t.getMessage());
  42. }
  43.  
  44. // Add the code that first reads the agents from the database, then
  45. // asks for an agent (id and name) and stores the agent to the database.
  46. // Finally, the program prints the agents in the database again.
  47. System.out.println("Agents in database:");
  48. ResultSet resultSet = connection.createStatement().executeQuery("SELECT * FROM Agent");
  49. while (resultSet.next()) {
  50. String idOutput = resultSet.getString("id");
  51. String nameOutput = resultSet.getString("name");
  52. System.out.println(idOutput + "\t" + nameOutput);
  53. }
  54. resultSet.close();
  55. PreparedStatement statement = connection.prepareStatement("INSERT INTO Agent (id, name) VALUES (?,?)");
  56. System.out.println("Add one:");
  57. System.out.println("What id?");
  58. Scanner IdReader = new Scanner(System.in);
  59. String id = IdReader.nextLine();
  60. statement.setString(1,id);
  61. System.out.println("What name?");
  62. Scanner nameReader = new Scanner(System.in);
  63. String name = nameReader.next();
  64. statement.setString(2,name);
  65. statement.executeUpdate();
  66. IdReader.close();
  67. nameReader.close();
  68. System.out.println("Agents in database:");
  69. ResultSet newResultSet = connection.createStatement().executeQuery("SELECT * FROM Agent");
  70. while (newResultSet.next()) {
  71. String idOutput = newResultSet.getString("id");
  72. String nameOutput = newResultSet.getString("name");
  73. System.out.println(idOutput + "\t" + nameOutput);
  74. }
  75. newResultSet.close();
  76. connection.close();
  77. }
  78. }
  79.  
  80.  
  81. ////TESTI////
  82.  
  83. package sec.helloinsert;
  84.  
  85. import fi.helsinki.cs.tmc.edutestutils.MockStdio;
  86. import fi.helsinki.cs.tmc.edutestutils.Points;
  87. import java.io.IOException;
  88. import java.nio.file.Files;
  89. import java.nio.file.Paths;
  90. import java.sql.Connection;
  91. import java.sql.DriverManager;
  92. import java.sql.ResultSet;
  93. import java.sql.SQLException;
  94. import java.util.ArrayList;
  95. import java.util.List;
  96. import java.util.UUID;
  97. import static org.junit.Assert.assertTrue;
  98. import org.junit.Before;
  99. import org.junit.Rule;
  100. import org.junit.Test;
  101.  
  102. @Points("S2.03")
  103. public class HelloInsertTest {
  104.  
  105. @Rule
  106. public MockStdio io = new MockStdio();
  107.  
  108. private String databaseFile;
  109. private String databaseAddress;
  110.  
  111. private List<String> agents;
  112.  
  113. @Before
  114. public void setup() {
  115. this.databaseFile = "db-" + UUID.randomUUID().toString().substring(0, 6);
  116. this.databaseAddress = "jdbc:h2:file:./" + this.databaseFile;
  117.  
  118. this.agents = new ArrayList<>();
  119. }
  120.  
  121. @Test
  122. public void testAddAgent() throws Throwable {
  123. String id = "Major";
  124. String name = "Tickle";
  125.  
  126. testAddAgent(id, name);
  127. }
  128.  
  129. @Test
  130. public void testRandomAgent() throws Throwable {
  131. String id = UUID.randomUUID().toString().substring(0, 6);
  132. String name = UUID.randomUUID().toString().substring(0, 6);
  133.  
  134. testAddAgent(id, name);
  135. }
  136.  
  137. private void testAddAgent(String id, String name) throws Throwable {
  138. initDatabase(databaseAddress, agents);
  139.  
  140. io.setSysIn(id + "\n" + name + "\n");
  141. HelloInsert.main(new String[]{databaseAddress});
  142.  
  143. List<Agent> agents = getAgents(databaseAddress);
  144. removeFile(databaseFile);
  145.  
  146. long count = agents.stream().filter(a -> a.id.equals(id) && a.name.equals(name)).count();
  147. assertTrue("Verify that the agent that the user inputs is added to the database.\nNow, no agents with the given id and name were found.", count == 1);
  148. }
  149.  
  150. private void initDatabase(String databaseAddress, List<String> entries) throws Throwable {
  151. Connection connection = DriverManager.getConnection(databaseAddress, "sa", "");
  152. connection.createStatement().executeUpdate("CREATE TABLE Agent (\n"
  153. + " id varchar(9) PRIMARY KEY,\n"
  154. + " name varchar(200)\n"
  155. + ");");
  156.  
  157. for (int i = 0; i < entries.size() - 1; i += 2) {
  158. connection.createStatement().executeUpdate("INSERT INTO Agent(id, name) VALUES ('" + entries.get(i) + "', '" + entries.get(i + 1) + "');");
  159. }
  160. connection.commit();
  161. connection.close();
  162. }
  163.  
  164. private List<Agent> getAgents(String databaseAddress) throws SQLException {
  165. Connection connection = DriverManager.getConnection(databaseAddress, "sa", "");
  166.  
  167. List<Agent> resultList = new ArrayList<>();
  168. ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM Agent;");
  169. while (rs.next()) {
  170.  
  171. Agent a = new Agent();
  172. a.id = rs.getString("id");
  173. a.name = rs.getString("name");
  174.  
  175. resultList.add(a);
  176. }
  177.  
  178. rs.close();
  179. connection.close();
  180.  
  181. return resultList;
  182. }
  183.  
  184. private void removeFile(String databaseFilename) throws IOException {
  185. Files.deleteIfExists(Paths.get(databaseFilename + ".mv.db"));
  186. Files.deleteIfExists(Paths.get(databaseFilename + ".trace.db"));
  187. }
  188.  
  189. private static class Agent {
  190.  
  191. String id;
  192. String name;
  193. }
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement