2004-06-11 Martin Baulig <martin@ximian.com>
authorMartin Baulig <martin@novell.com>
Fri, 11 Jun 2004 18:51:23 +0000 (18:51 -0000)
committerMartin Baulig <martin@novell.com>
Fri, 11 Jun 2004 18:51:23 +0000 (18:51 -0000)
* gen-56.cs: New test from #58307.

svn path=/trunk/mcs/; revision=29373

mcs/tests/ChangeLog
mcs/tests/gen-56.cs [new file with mode: 0644]
mcs/tests/gen-test.pl

index 667cd09981c728ceb6d0ff293ae081dc4e315bb4..6f26de77833d44baf3e10ad6235dce8275841a2c 100755 (executable)
@@ -1,3 +1,7 @@
+2004-06-11  Martin Baulig  <martin@ximian.com>
+
+       * gen-56.cs: New test from #58307.
+
 2004-06-11  Martin Baulig  <martin@ximian.com>
 
        * test-269.cs: Another varargs test.
diff --git a/mcs/tests/gen-56.cs b/mcs/tests/gen-56.cs
new file mode 100644 (file)
index 0000000..8080c0a
--- /dev/null
@@ -0,0 +1,58 @@
+//-- ex-gen-logger
+//-- ex-gen-struct-pair
+//-- ex-gen-logging-pairs
+// 1.2 alpha
+
+using System;
+
+public class Log<T> {
+  private const int SIZE = 5;
+  private static int instanceCount = 0;
+  private int count = 0;
+  private T[] log = new T[SIZE];
+  public Log() { instanceCount++; }
+  public static int InstanceCount { get { return instanceCount; } }
+  public void Add(T msg) { log[count++ % SIZE] = msg; }
+  public int Count { get { return count; } }
+  public T Last {
+    get { // Return the last log entry, or null if nothing logged yet
+      return count==0 ? default(T) : log[(count-1)%SIZE];
+    }
+    set { // Update the last log entry, or create one if nothing logged yet 
+      if (count==0)
+        log[count++] = value;
+      else
+        log[(count-1)%SIZE] = value;
+    }
+  }    
+  public T[] All {
+    get {
+      int size = Math.Min(count, SIZE);
+      T[] res = new T[size];
+      for (int i=0; i<size; i++)
+        res[i] = log[(count-size+i) % SIZE];
+      return res;
+    }
+  }
+}
+
+class TestLog {
+  class MyTest {
+    public static void Main(String[] args) {
+      Log<String> log1 = new Log<String>();
+      log1.Add("Reboot");
+      log1.Add("Coffee");
+      Log<DateTime> log2 = new Log<DateTime>();
+      log2.Add(DateTime.Now);
+      log2.Add(DateTime.Now.AddHours(1));
+      DateTime[] dts = log2.All;
+      // Printing both logs:
+      foreach (String s in log1.All) 
+       Console.Write("{0}   ", s);
+      Console.WriteLine();
+      foreach (DateTime dt in dts) 
+       Console.Write("{0}   ", dt);
+      Console.WriteLine();
+    }
+  }
+}
index 72a0b1c8e9d4cec19773d9678da37c1f19f798f4..0c909293b10c967a3c678037d49f85aa4cadc6fb 100755 (executable)
@@ -8,7 +8,7 @@ my @normal = qw[gen-1 gen-2 gen-3 gen-4 gen-5 gen-6 gen-7 gen-8 gen-9 gen-10 gen
                gen-14 gen-15 gen-16 gen-18 gen-19 gen-20 gen-21 gen-22 gen-23 gen-24 gen-25
                gen-26 gen-27 gen-28 gen-29 gen-30 gen-32 gen-33 gen-34 gen-35 gen-36 gen-37
                gen-38 gen-39 gen-40 gen-41 gen-42 gen-43 gen-44 gen-45 gen-46 gen-48 gen-49
-               gen-50 gen-51 gen-52 gen-53 gen-54 gen-55];
+               gen-50 gen-51 gen-52 gen-53 gen-54 gen-55 gen-56];
 my @compileonly = qw[];
 my @library = qw[gen-13 gen-17 gen-31 gen-47];