Copied remotely
[mono.git] / mcs / class / corlib / Test / System.Security.Cryptography / RNGCryptoServiceProviderTest.cs
1 //
2 // TestSuite.System.Security.Cryptography.RNGCryptoServiceProviderTest.cs
3 //
4 // Authors:
5 //      Mark Crichton (crichton@gimp.org)
6 //      Sebastien Pouliot  (sebastien@ximian.com)
7 //
8 // Copyright (C) 2004 Novell (http://www.novell.com)
9 //
10
11 using System;
12 using System.Security.Cryptography;
13
14 using NUnit.Framework;
15
16 namespace MonoTests.System.Security.Cryptography {
17
18         [TestFixture]
19         public class RNGCryptoServiceProviderTest : Assertion {
20
21                 private RNGCryptoServiceProvider _algo;
22                 
23                 [SetUp]
24                 public void SetUp () 
25                 {
26                         _algo = new RNGCryptoServiceProvider ();
27                 }
28
29                 [Test]
30                 public void ConstructorByteArray () 
31                 {
32                         byte[] array = new byte [16];
33                         byte[] seed = (byte[]) array.Clone ();
34                         RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider (seed);
35                         AssertEquals ("Seed", BitConverter.ToString (array), BitConverter.ToString (seed));
36                 }
37
38                 [Test]
39                 public void ConstructorByteArray_Null () 
40                 {
41                         byte[] array = null;
42                         RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider (array);
43                 }
44
45                 [Test]
46                 public void ConstructorCsp_Null () 
47                 {
48                         CspParameters csp = null;
49                         RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider (csp);
50                 }
51
52                 [Test]
53                 public void ConstructorString () 
54                 {
55                         string s = "Mono seed";
56                         RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider (s);
57                         AssertEquals ("Seed", "Mono seed", s);
58                 }
59
60                 [Test]
61                 public void ConstructorString_Null () 
62                 {
63                         string s = null;
64                         RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider (s);
65                 }
66
67                 [Test]
68                 public void GetBytes () 
69                 {
70                         byte[] random = new byte [25];
71                         // The C code doesn't throw an exception yet.
72                         _algo.GetBytes (random);
73                 }
74
75                 [Test]
76                 public void GetNonZeroBytes () 
77                 {
78                         byte[] random = new byte [25];
79                         // This one we can check...
80                         _algo.GetNonZeroBytes (random);
81                         
82                         foreach (Byte rnd_byte in random) {
83                                 Assert("Properties (2)", rnd_byte != 0);
84                         }
85                 }
86
87                 [Test]
88                 [ExpectedException (typeof (ArgumentNullException))]
89                 public void GetBytesNull () 
90                 {
91                         _algo.GetBytes (null);
92                 }
93
94                 [Test]
95                 [ExpectedException (typeof (ArgumentNullException))]
96                 public void GetNonZeroBytesNull () 
97                 {
98                         _algo.GetNonZeroBytes (null);
99                 }
100         }
101 }