public void testDB()
      throws SQLException, IOException, ClassNotFoundException, SQLException,
          ClassNotFoundException, InterruptedException {

    String path = this.getClass().getResource("IdentificationDBTest.class").getPath();
    path = path.substring(1, path.indexOf("/target/"));
    path += "/src/test/resources/experiment/testDB";
    try {
      ObjectsCache cache = new ObjectsCache();
      cache.setAutomatedMemoryManagement(false);
      cache.setCacheSize(0);
      IdentificationDB idDB = new IdentificationDB(path, "testId", true, cache);
      try {

        String spectrumKey = "spectrum_file_cus_spectrum_title";
        String peptideKey = "PEPTIDE";
        String proteinKey = "test_protein";
        SpectrumMatch testSpectrumMatch = new SpectrumMatch(spectrumKey);
        ArrayList<String> testProteins = new ArrayList<String>();
        testProteins.add("test protein1");
        testProteins.add("test protein2");
        Peptide peptide = new Peptide(peptideKey, new ArrayList<ModificationMatch>());
        peptide.setParentProteins(testProteins);
        testSpectrumMatch.addHit(
            Advocate.mascot.getIndex(),
            new PeptideAssumption(
                peptide, 1, Advocate.mascot.getIndex(), new Charge(Charge.PLUS, 2), 0.1, "no file"),
            false);
        idDB.addSpectrumMatch(testSpectrumMatch);

        peptide = new Peptide(peptideKey, new ArrayList<ModificationMatch>());
        peptide.setParentProteins(testProteins);
        PeptideMatch testPeptideMatch = new PeptideMatch(peptide, peptide.getKey());
        idDB.addPeptideMatch(testPeptideMatch);

        ProteinMatch testProteinMatch = new ProteinMatch(proteinKey);
        idDB.addProteinMatch(testProteinMatch);

        testSpectrumMatch = idDB.getSpectrumMatch(spectrumKey, true);
        Assert.assertTrue(testSpectrumMatch.getKey().equals(spectrumKey));

        HashMap<Integer, HashMap<Double, ArrayList<SpectrumIdentificationAssumption>>>
            assumptionsMap = testSpectrumMatch.getAssumptionsMap();
        HashMap<Double, ArrayList<SpectrumIdentificationAssumption>> mascotAssumptions =
            assumptionsMap.get(Advocate.mascot.getIndex());
        Assert.assertTrue(mascotAssumptions.size() == 1);
        ArrayList<Double> mascotScores = new ArrayList<Double>(mascotAssumptions.keySet());
        Assert.assertTrue(mascotScores.size() == 1);
        double bestScore = mascotScores.get(0);
        Assert.assertTrue(bestScore == 0.1);
        ArrayList<SpectrumIdentificationAssumption> bestAssumptions =
            mascotAssumptions.get(bestScore);
        PeptideAssumption bestAssumption = (PeptideAssumption) bestAssumptions.get(0);
        Peptide bestPeptide = bestAssumption.getPeptide();
        Assert.assertTrue(bestPeptide.getParentProteinsNoRemapping().size() == 2);
        Assert.assertTrue(
            bestPeptide.getParentProteinsNoRemapping().get(0).equals(testProteins.get(0)));
        Assert.assertTrue(
            bestPeptide.getParentProteinsNoRemapping().get(1).equals(testProteins.get(1)));
        ArrayList<String> proteins = new ArrayList<String>();
        proteins.add(proteinKey);
        bestPeptide.setParentProteins(proteins);
        idDB.updateMatch(testSpectrumMatch);

        testSpectrumMatch = idDB.getSpectrumMatch(spectrumKey, true);
        assumptionsMap = testSpectrumMatch.getAssumptionsMap();
        mascotAssumptions = assumptionsMap.get(Advocate.mascot.getIndex());
        Assert.assertTrue(mascotAssumptions.size() == 1);
        mascotScores = new ArrayList<Double>(mascotAssumptions.keySet());
        Assert.assertTrue(mascotScores.size() == 1);
        bestScore = mascotScores.get(0);
        Assert.assertTrue(bestScore == 0.1);
        bestAssumptions = mascotAssumptions.get(bestScore);
        bestAssumption = (PeptideAssumption) bestAssumptions.get(0);
        bestPeptide = bestAssumption.getPeptide();
        Assert.assertTrue(bestPeptide.getParentProteinsNoRemapping().size() == 1);
        Assert.assertTrue(bestPeptide.getParentProteinsNoRemapping().get(0).equals(proteinKey));

        testPeptideMatch = idDB.getPeptideMatch(peptideKey, true);
        Assert.assertTrue(testPeptideMatch.getKey().equals(peptideKey));

        testProteinMatch = idDB.getProteinMatch(proteinKey, true);
        Assert.assertTrue(testProteinMatch.getKey().equals(proteinKey));

        double testScore = 12.3;
        PepnovoAssumptionDetails testParameter = new PepnovoAssumptionDetails();
        testParameter.setRankScore(testScore);
        idDB.addSpectrumMatchParameter(spectrumKey, testParameter);
        testParameter =
            (PepnovoAssumptionDetails)
                idDB.getSpectrumMatchParameter(spectrumKey, testParameter, true);
        Assert.assertTrue(testParameter.getRankScore() == testScore);

      } finally {
        idDB.close();
      }
    } finally {
      File dbFolder = new File(path);
      DerbyUtil.closeConnection();
      Util.deleteDir(dbFolder);
    }
  }