public void Copier_PrintCounter()
        {
            var p      = new Printer();
            var s      = new Scanner();
            var copier = new Copier(p, s);

            copier.PowerOn();

            IDocument doc1 = new PDFDocument("aaa.pdf");

            copier.Print(in doc1);
            IDocument doc2 = new TextDocument("aaa.txt");

            copier.Print(in doc2);
            IDocument doc3 = new ImageDocument("aaa.jpg");

            copier.Print(in doc3);

            copier.PowerOff();
            copier.Print(in doc3);
            copier.Scan(out doc1);
            copier.PowerOn();

            copier.ScanAndPrint(out doc1, doc1.GetFormatType());
            copier.ScanAndPrint(out doc2, doc2.GetFormatType());

            // 5 wydruków, gdy urządzenie włączone
            Assert.AreEqual(5, copier.PrintCounter);
        }
        static void Main(string[] args)
        {
            Printer printer = new Printer();

            printer.PowerOn();

            IDocument doc = new PDFDocument("aaa.pdf");

            printer.Print(doc);
            printer.Print(doc);

            printer.PowerOff();
            printer.Print(new PDFDocument("AAA.pdf"));
            Console.WriteLine("Printer => Number printed documents: " + printer.PrintCounter);
            Console.WriteLine("Printer => Number starts: " + printer.Counter);

            printer.PowerOn();

            Scanner scanner = new Scanner();

            scanner.PowerOn();

            IDocument doc1 = new TextDocument("bbb.pdf");

            scanner.Scan(out doc1, doc1.GetFormatType());
            scanner.Scan(out doc1, doc1.GetFormatType());
            scanner.Scan(out doc1, doc1.GetFormatType());
            printer.Print(doc1);

            Console.WriteLine("Scanner => Number scans: " + scanner.ScanCounter);

            IDocument doc2 = new ImageDocument("ccc.pdf");

            Copier copier = new Copier();

            copier.scanner.PowerOn();
            copier.scanner.Scan(out doc2, doc2.GetFormatType());
            copier.scanner.PowerOff();

            copier.scanner.PowerOn();
            copier.scanner.PowerOff();
            copier.scanner.PowerOn();

            copier.printer.PowerOn();
            copier.printer.PowerOn();

            copier.printer.Print(doc2);

            copier.printer.PowerOn();
            copier.printer.PowerOff();

            copier.scanner.PowerOff();

            Console.WriteLine(copier.scanner.ScanCounter);
            Console.WriteLine(copier.printer.PrintCounter);

            MultidimensionalDevice device = new MultidimensionalDevice();

            IDocument doc3 = new PDFDocument("ddd.pdf");

            device.printer.PowerOn();
            device.printer.Print(doc3);

            device.scanner.PowerOn();
            device.scanner.Scan(out doc3, doc3.GetFormatType());

            device.scanner.PowerOff();
            device.printer.PowerOff();

            device.Fax(out doc3);

            Console.WriteLine(device.printer.Counter);
            Console.WriteLine(device.printer.Counter);

            Console.WriteLine(device.printer.PrintCounter);
            Console.WriteLine(device.scanner.ScanCounter);
        }