### Question:
GrinderProperties extends Properties { public final void save() throws PersistenceException { if (m_file == null) { throw new PersistenceException("No associated file"); } OutputStream outputStream = null; try { outputStream = new FileOutputStream(m_file); store(outputStream, generateFileHeader()); } catch (IOException e) { UncheckedInterruptedException.ioException(e); throw new PersistenceException( "Error writing properties file '" + m_file.getPath() + '\'', e); } finally { Closer.close(outputStream); } } GrinderProperties();  GrinderProperties(File file); final File getAssociatedFile(); final void setAssociatedFile(File file); final void save(); final void saveSingleProperty(String name); final void setErrorWriter(PrintWriter writer); final synchronized GrinderProperties getPropertySubset(String prefix); final int getInt(String propertyName, int defaultValue); final void setInt(String propertyName, int value); final long getLong(String propertyName, long defaultValue); final void setLong(String propertyName, long value); final short getShort(String propertyName, short defaultValue); final void setShort(String propertyName, short value); final double getDouble(String propertyName, double defaultValue); final void setDouble(String propertyName, double value); final boolean getBoolean(String propertyName, boolean defaultValue); final void setBoolean(String propertyName, boolean value); final File getFile(String propertyName, File defaultValue); final File resolveRelativeFile(File file); final void setFile(String propertyName, File value); static final String SCRIPT; static final String LOG_DIRECTORY; static final String CONSOLE_HOST; static final String CONSOLE_PORT; static final File DEFAULT_PROPERTIES; static final File DEFAULT_SCRIPT; }### Answer:
@Test public void testSave() throws Exception { try { assertNull(m_grinderProperties.getAssociatedFile()); m_grinderProperties.save(); fail("Expected GrinderException as no associated file"); } catch (GrinderException e) { } final GrinderProperties defaultFileProperties = new GrinderProperties(GrinderProperties.DEFAULT_PROPERTIES); assertEquals(new File("grinder.properties"), defaultFileProperties.getAssociatedFile()); final File file = File.createTempFile("testing", "123", getDirectory()); final GrinderProperties properties = new GrinderProperties(file); assertEquals(file, properties.getAssociatedFile()); properties.putAll(m_allSet); properties.save(); final Properties readProperties = new Properties(); final InputStream in = new FileInputStream(file); readProperties.load(in); in.close(); (new IterateOverProperties(m_allSet) { void match(String key, String value) throws Exception { assertEquals(value, readProperties.getProperty(key)); } } ).run(); }