public void ProcessMultiLineOutputTest()
        {
            string content = @"root      1     0     852    628   c1157816 0805d0d6 S /init
            root      2     0     0      0     c10589a4 00000000 S kthreadd
            root      3     2     0      0     c105fd59 00000000 S ksoftirqd/0";

            ProcessOutputReceiver receiver = new ProcessOutputReceiver();

            StringReader reader = new StringReader(content);

            while (reader.Peek() >= 0)
            {
                receiver.AddOutput(reader.ReadLine());
            }

            receiver.Flush();
            Assert.AreEqual(2, receiver.Processes.Count);
        }
        public void ProcessLimitedOutputTest()
        {
            string content = @"  PID USER       VSZ STAT COMMAND
            1 root       340 S    /init
            2 root         0 SW<  [kthreadd]";

            ProcessOutputReceiver receiver = new ProcessOutputReceiver();

            StringReader reader = new StringReader(content);

            while (reader.Peek() >= 0)
            {
                receiver.AddOutput(reader.ReadLine());
            }

            receiver.Flush();
            Assert.AreEqual(2, receiver.Processes.Count);
            Assert.AreEqual("/init", receiver.Processes.First().Name);
            Assert.AreEqual("kthreadd", receiver.Processes.Last().Name);
        }
        public void ProcessOutputTest()
        {
            string output = @"USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
            root      1     0     852    628   c1157816 0805d0d6 S /init
            root      2     0     0      0     c10589a4 00000000 S kthreadd
            root      127   2     0      0     c1052a3b 00000000 S ext4-dio-unwrit
            root      129   1     1572   4     c11850d6 0805f0bb S /sbin/healthd
            shell     145   1     1552   584   c135a860 b7649fe6 S /system/bin/sh
            root      146   1     4764   260   ffffffff 0806ba20 S /sbin/adbd
            system    452   138   511452 44104 ffffffff b765ff1b S system_server
            root      470   2     0      0     c1053187 00000000 S kworker/1:1H
            root      476   1     1544   616   c104b8ee b76b75b6 S /system/bin/sh
            root      478   476   1412   204   c105c979 b771a1e1 S zygotelaunch
            u0_a33    664   138   449648 22100 ffffffff b765ff1b S com.android.music
            u0_a5     698   138   451988 32252 ffffffff b765ff1b S android.process.media
            root      710   1     1312   416   c1157816 b7697fe6 S /system/bin/logwrapper
            root      715   710   1544   612   c104b8ee b76405b6 S /system/bin/sh
            wifi      722   715   5812   2152  c1157816 b74c2610 S /system/bin/wpa_supplicant
            root      731   2     0      0     c1053187 00000000 S kworker/0:1H
            root      754   1     1312   416   c1157816 b7719fe6 S /system/bin/logwrapper
            dhcp      755   754   1624   740   c1157816 b770dfe6 S /system/bin/dhcpcd
            u0_a4     762   138   451852 21908 ffffffff b765ff1b S com.android.dialer
            root      991   146   1556   696   c104b8ee b76345b6 S /system/bin/sh
            root      1044  991   1868   504   00000000 b76c0fe6 R ps";

            ProcessOutputReceiver receiver = new ProcessOutputReceiver();

            using (StringReader reader = new StringReader(output))
            {
                while (reader.Peek() >= 0)
                {
                    string line = reader.ReadLine();
                    receiver.AddOutput(line);
                }
            }

            receiver.Flush();
            Assert.AreEqual(21, receiver.Processes.Count);
            Assert.AreEqual("/init", receiver.Processes.First().Name);
            Assert.AreEqual("ps", receiver.Processes.Last().Name);
        }