Shorter pprint's for empty sets and frozensets.  Fix indentation of frozensets.  Add tests including two complex data structures.
diff --git a/Lib/pprint.py b/Lib/pprint.py
index 9359de3..9f9d6a2 100644
--- a/Lib/pprint.py
+++ b/Lib/pprint.py
@@ -167,25 +167,31 @@
             (issubclass(typ, set) and r is set.__repr__) or
             (issubclass(typ, frozenset) and r is frozenset.__repr__)
            ):
+            length = _len(object)
             if issubclass(typ, list):
                 write('[')
                 endchar = ']'
             elif issubclass(typ, set):
+                if not length:
+                    write('set()')
+                    return
                 write('set([')
                 endchar = '])'
                 object = sorted(object)
                 indent += 4
             elif issubclass(typ, frozenset):
+                if not length:
+                    write('frozenset()')
+                    return
                 write('frozenset([')
                 endchar = '])'
                 object = sorted(object)
-                indent += 9
+                indent += 10
             else:
                 write('(')
                 endchar = ')'
             if self._indent_per_level > 1:
                 write((self._indent_per_level - 1) * ' ')
-            length = _len(object)
             if length:
                 context[objid] = 1
                 indent = indent + self._indent_per_level