diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py
index 7e5b2e9..9fec392 100644
--- a/Lib/test/test_aifc.py
+++ b/Lib/test/test_aifc.py
@@ -1,5 +1,6 @@
-from test.test_support import findfile, run_unittest
+from test.test_support import findfile, run_unittest, TESTFN
 import unittest
+import os
 
 import aifc
 
@@ -7,16 +8,29 @@
 class AIFCTest(unittest.TestCase):
 
     def setUp(self):
+        self.f = self.fout = None
         self.sndfilepath = findfile('Sine-1000Hz-300ms.aif')
 
+    def tearDown(self):
+        if self.f is not None:
+            self.f.close()
+        if self.fout is not None:
+            try:
+                self.fout.close()
+            except (aifc.Error, AttributeError):
+                pass
+        try:
+            os.remove(TESTFN)
+        except OSError:
+            pass
+
     def test_skipunknown(self):
         #Issue 2245
         #This file contains chunk types aifc doesn't recognize.
         f = aifc.open(self.sndfilepath)
-        f.close()
 
     def test_params(self):
-        f = aifc.open(self.sndfilepath)
+        f = self.f = aifc.open(self.sndfilepath)
         self.assertEqual(f.getnchannels(), 2)
         self.assertEqual(f.getsampwidth(), 2)
         self.assertEqual(f.getframerate(), 48000)
@@ -24,10 +38,9 @@
         self.assertEqual(f.getcomptype(), 'NONE')
         self.assertEqual(f.getcompname(), 'not compressed')
         self.assertEqual(f.getparams(), (2, 2, 48000, 14400, 'NONE', 'not compressed'))
-        f.close()
 
     def test_read(self):
-        f = aifc.open(self.sndfilepath)
+        f = self.f = aifc.open(self.sndfilepath)
         self.assertEqual(f.tell(), 0)
         self.assertEqual(f.readframes(2), '\x00\x00\x00\x00\x0b\xd4\x0b\xd4')
         f.rewind()
@@ -41,9 +54,42 @@
         self.assertEqual(f.readframes(2), '\x17t\x17t"\xad"\xad')
         f.setpos(pos0)
         self.assertEqual(f.readframes(2), '\x00\x00\x00\x00\x0b\xd4\x0b\xd4')
-        f.close()
 
-    #XXX Need more tests!
+    def test_write(self):
+        f = self.f = aifc.open(self.sndfilepath)
+        fout = self.fout = aifc.open(TESTFN, 'wb')
+        fout.aifc()
+        fout.setparams(f.getparams())
+        for frame in range(f.getnframes()):
+            fout.writeframes(f.readframes(1))
+        fout.close()
+        fout = self.fout = aifc.open(TESTFN, 'rb')
+        f.rewind()
+        self.assertEqual(f.getparams(), fout.getparams())
+        self.assertEqual(f.readframes(5), fout.readframes(5))
+
+    def test_compress(self):
+        f = self.f = aifc.open(self.sndfilepath)
+        fout = self.fout = aifc.open(TESTFN, 'wb')
+        fout.aifc()
+        fout.setnchannels(f.getnchannels())
+        fout.setsampwidth(f.getsampwidth())
+        fout.setframerate(f.getframerate())
+        fout.setcomptype('ULAW', 'foo')
+        for frame in range(f.getnframes()):
+            fout.writeframes(f.readframes(1))
+        fout.close()
+        self.assertLess(
+            os.stat(TESTFN).st_size,
+            os.stat(self.sndfilepath).st_size*0.75,
+            )
+        fout = self.fout = aifc.open(TESTFN, 'rb')
+        f.rewind()
+        self.assertEqual(f.getparams()[0:3], fout.getparams()[0:3])
+        self.assertEqual(fout.getcomptype(), 'ULAW')
+        self.assertEqual(fout.getcompname(), 'foo')
+        # XXX: this test fails, not sure if it should succeed or not
+        # self.assertEqual(f.readframes(5), fout.readframes(5))
 
 
 def test_main():
