using System; using System.Collections; using System.Collections.Generic; using System.Text; using NUnit.Framework; using Janrain.OpenId; namespace OpenIdTests { [TestFixture] public class KVUtilTestSuite { public static void KVDictTest(byte[] kvform, Dictionary dict) { Dictionary d = (Dictionary) KVUtil.KVToDict(kvform); Dictionary.KeyCollection keys = dict.Keys; foreach (string key in keys) { Assert.AreEqual(d[key], dict[key], d[key] + " and " + dict[key] + " do not match."); } //byte[] kv = KVUtil.DictToKV(d); //Hashtable d2 = (Hashtable) KVUtil.KVToDict(kv); //foreach (DictionaryEntry de in d) //{ // Assert.AreEqual(de.Value, d2[de.Key], UTF8Encoding.UTF8.GetString(kvform)); //} } [Test] public void KVDict() { KVDictTest(UTF8Encoding.UTF8.GetBytes(""), new Dictionary()); Dictionary d1 = new Dictionary(); d1.Add("college", "harvey mudd"); KVDictTest(UTF8Encoding.UTF8.GetBytes("college:harvey mudd\n"), d1); Dictionary d2 = new Dictionary(); d2.Add("city", "claremont"); d2.Add("state", "CA"); KVDictTest(UTF8Encoding.UTF8.GetBytes("city:claremont\nstate:CA\n"), d2); Dictionary d3 = new Dictionary(); d3.Add("is_valid", "true"); d3.Add("invalidate_handle", "{HMAC-SHA1:2398410938412093}"); KVDictTest(UTF8Encoding.UTF8.GetBytes("is_valid:true\ninvalidate_handle:{HMAC-SHA1:2398410938412093}\n"), d3); KVDictTest(UTF8Encoding.UTF8.GetBytes("x\n"), new Dictionary()); KVDictTest(UTF8Encoding.UTF8.GetBytes("x\nx\n"), new Dictionary()); KVDictTest(UTF8Encoding.UTF8.GetBytes("East is least\n"), new Dictionary()); KVDictTest(UTF8Encoding.UTF8.GetBytes("x\n\n"), new Dictionary()); Dictionary d4 = new Dictionary(); d4.Add("", ""); KVDictTest(UTF8Encoding.UTF8.GetBytes(":\n"), d4); Dictionary d5 = new Dictionary(); d5.Add("", "missingkey"); KVDictTest(UTF8Encoding.UTF8.GetBytes(":missingkey\n"), d5); Dictionary d6 = new Dictionary(); d6.Add("street", "foothill blvd"); KVDictTest(UTF8Encoding.UTF8.GetBytes("street:foothill blvd\n"), d6); Dictionary d7 = new Dictionary(); d7.Add("major", "computer science"); KVDictTest(UTF8Encoding.UTF8.GetBytes("major:computer science\n"), d7); Dictionary d8 = new Dictionary(); d8.Add("dorm", "east"); KVDictTest(UTF8Encoding.UTF8.GetBytes(" dorm : east \n"), d8); Dictionary d9 = new Dictionary(); d9.Add("e^(i*pi)+1", "0"); KVDictTest(UTF8Encoding.UTF8.GetBytes("e^(i*pi)+1:0"), d9); Dictionary d10 = new Dictionary(); d10.Add("east", "west"); d10.Add("north", "south"); KVDictTest(UTF8Encoding.UTF8.GetBytes("east:west\nnorth:south"), d10); } } }