Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////VIRHE////
- FAIL: sec.helloinsert.HelloInsertTest testAddAgent
- NoSuchElementException
- java.util.Scanner.throwFor(Scanner.java:862)
- java.util.Scanner.next(Scanner.java:1371)
- sec.helloinsert.HelloInsert.main(HelloInsert.java:50)
- sec.helloinsert.HelloInsertTest.testAddAgent(HelloInsertTest.java:59) sec.helloinsert.HelloInsertTest.testAddAgent(HelloInsertTest.java:44)
- HelloInsert.java:50 === statement.setString(2,name);
- /////KOODI////
- package sec.helloinsert;
- import java.io.FileReader;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.util.Scanner;
- import org.h2.tools.RunScript;
- public class HelloInsert {
- public static void main(String[] args) throws Exception {
- // Open connection to a database -- do not alter this code
- String databaseAddress = "jdbc:h2:file:./database";
- if (args.length > 0) {
- databaseAddress = args[0];
- }
- Connection connection = DriverManager.getConnection(databaseAddress, "sa", "");
- try {
- // If database has not yet been created, insert content
- RunScript.execute(connection, new FileReader("sql/database-schema.sql"));
- RunScript.execute(connection, new FileReader("sql/database-import.sql"));
- } catch (Throwable t) {
- System.err.println(t.getMessage());
- }
- // Add the code that first reads the agents from the database, then
- // asks for an agent (id and name) and stores the agent to the database.
- // Finally, the program prints the agents in the database again.
- System.out.println("Agents in database:");
- ResultSet resultSet = connection.createStatement().executeQuery("SELECT * FROM Agent");
- while (resultSet.next()) {
- String idOutput = resultSet.getString("id");
- String nameOutput = resultSet.getString("name");
- System.out.println(idOutput + "\t" + nameOutput);
- }
- resultSet.close();
- PreparedStatement statement = connection.prepareStatement("INSERT INTO Agent (id, name) VALUES (?,?)");
- System.out.println("Add one:");
- System.out.println("What id?");
- Scanner IdReader = new Scanner(System.in);
- String id = IdReader.nextLine();
- statement.setString(1,id);
- System.out.println("What name?");
- Scanner nameReader = new Scanner(System.in);
- String name = nameReader.next();
- statement.setString(2,name);
- statement.executeUpdate();
- IdReader.close();
- nameReader.close();
- System.out.println("Agents in database:");
- ResultSet newResultSet = connection.createStatement().executeQuery("SELECT * FROM Agent");
- while (newResultSet.next()) {
- String idOutput = newResultSet.getString("id");
- String nameOutput = newResultSet.getString("name");
- System.out.println(idOutput + "\t" + nameOutput);
- }
- newResultSet.close();
- connection.close();
- }
- }
- ////TESTI////
- package sec.helloinsert;
- import fi.helsinki.cs.tmc.edutestutils.MockStdio;
- import fi.helsinki.cs.tmc.edutestutils.Points;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.UUID;
- import static org.junit.Assert.assertTrue;
- import org.junit.Before;
- import org.junit.Rule;
- import org.junit.Test;
- @Points("S2.03")
- public class HelloInsertTest {
- @Rule
- public MockStdio io = new MockStdio();
- private String databaseFile;
- private String databaseAddress;
- private List<String> agents;
- @Before
- public void setup() {
- this.databaseFile = "db-" + UUID.randomUUID().toString().substring(0, 6);
- this.databaseAddress = "jdbc:h2:file:./" + this.databaseFile;
- this.agents = new ArrayList<>();
- }
- @Test
- public void testAddAgent() throws Throwable {
- String id = "Major";
- String name = "Tickle";
- testAddAgent(id, name);
- }
- @Test
- public void testRandomAgent() throws Throwable {
- String id = UUID.randomUUID().toString().substring(0, 6);
- String name = UUID.randomUUID().toString().substring(0, 6);
- testAddAgent(id, name);
- }
- private void testAddAgent(String id, String name) throws Throwable {
- initDatabase(databaseAddress, agents);
- io.setSysIn(id + "\n" + name + "\n");
- HelloInsert.main(new String[]{databaseAddress});
- List<Agent> agents = getAgents(databaseAddress);
- removeFile(databaseFile);
- long count = agents.stream().filter(a -> a.id.equals(id) && a.name.equals(name)).count();
- 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);
- }
- private void initDatabase(String databaseAddress, List<String> entries) throws Throwable {
- Connection connection = DriverManager.getConnection(databaseAddress, "sa", "");
- connection.createStatement().executeUpdate("CREATE TABLE Agent (\n"
- + " id varchar(9) PRIMARY KEY,\n"
- + " name varchar(200)\n"
- + ");");
- for (int i = 0; i < entries.size() - 1; i += 2) {
- connection.createStatement().executeUpdate("INSERT INTO Agent(id, name) VALUES ('" + entries.get(i) + "', '" + entries.get(i + 1) + "');");
- }
- connection.commit();
- connection.close();
- }
- private List<Agent> getAgents(String databaseAddress) throws SQLException {
- Connection connection = DriverManager.getConnection(databaseAddress, "sa", "");
- List<Agent> resultList = new ArrayList<>();
- ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM Agent;");
- while (rs.next()) {
- Agent a = new Agent();
- a.id = rs.getString("id");
- a.name = rs.getString("name");
- resultList.add(a);
- }
- rs.close();
- connection.close();
- return resultList;
- }
- private void removeFile(String databaseFilename) throws IOException {
- Files.deleteIfExists(Paths.get(databaseFilename + ".mv.db"));
- Files.deleteIfExists(Paths.get(databaseFilename + ".trace.db"));
- }
- private static class Agent {
- String id;
- String name;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement