3868cadee0da57c21cd600258185590a2b503503
[vlc.git] / bindings / cil / tests / testvlc.cs
1 /*
2  * testvlc.cs - tests for libvlc CIL bindings
3  *
4  * $Id$
5  */
6
7 /**********************************************************************
8  *  Copyright (C) 2007 Rémi Denis-Courmont.                           *
9  *  This program is free software; you can redistribute and/or modify *
10  *  it under the terms of the GNU General Public License as published *
11  *  by the Free Software Foundation; version 2 of the license, or (at *
12  *  your option) any later version.                                   *
13  *                                                                    *
14  *  This program is distributed in the hope that it will be useful,   *
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of    *
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.              *
17  *  See the GNU General Public License for more details.              *
18  *                                                                    *
19  *  You should have received a copy of the GNU General Public License *
20  *  along with this program; if not, you can get it from:             *
21  *  http://www.gnu.org/copyleft/gpl.html                              *
22  **********************************************************************/
23
24 using System;
25 using VideoLAN.LibVLC;
26
27 namespace VideoLAN.LibVLC.Test
28 {
29     public sealed class Test
30     {
31         private static void DumpMedia (Media m)
32         {
33             Console.WriteLine ("Media at    {0}", m.Location);
34             Console.WriteLine (" duration:  {0}µs", m.Duration);
35             Console.WriteLine (" preparsed: {0}", m.IsPreparsed);
36         }
37
38         private static void DumpPlayer (Player p)
39         {
40             if (!p.IsPlaying)
41                 return;
42
43             int percent = (int)(p.Position * 100);
44             Console.Write ("{0} of {1} ms ({2}%)\r", p.Time, p.Length,
45                            percent);
46         }
47
48         private static void Sleep (int msec)
49         {
50             System.Threading.Thread.Sleep (msec);
51         }
52
53         public static int Main (string[] args)
54         {
55             string[] argv = new string[]{
56                 "-vv", "-I", "dummy", "--plugin-path=../../modules"
57             };
58
59             Console.WriteLine ("Running on LibVLC {0} ({1})", VLC.Version,
60                                VLC.ChangeSet);
61             Console.WriteLine (" (compiled with {0})", VLC.Compiler);
62
63             VLC vlc = new VLC (argv);
64             foreach (string mrl in args)
65             {
66                 Media media = new Media (vlc, mrl);
67                 Player player = new Player (media);
68
69                 DumpMedia (media);
70                 DumpMedia ((Media)media.Clone ());
71
72                 player.Play ();
73                 do
74                 {
75                     DumpPlayer (player);
76                     Sleep (500);
77                 }
78                 while (player.IsPlaying);
79                 player.Stop ();
80                 media.Dispose ();
81                 player.Dispose ();
82             }
83
84             vlc.Dispose ();
85             return 0;
86         }
87     };
88 };