blob: 1c43e24da5ee21a5d54d9b1dda0f6d0fb39d75f1 [file] [log] [blame]
csharptest2cf6e1b2011-09-16 10:55:10 -05001using System;
2using System.IO;
3using System.Text;
csharptesteac64a52011-10-04 13:43:26 -05004using Microsoft.VisualStudio.TestTools.UnitTesting;
csharptest2cf6e1b2011-09-16 10:55:10 -05005using Google.ProtocolBuffers.TestProtos;
6using Google.ProtocolBuffers.Serialization.Http;
7
8namespace Google.ProtocolBuffers
9{
csharptesteac64a52011-10-04 13:43:26 -050010 [TestClass]
csharptest2cf6e1b2011-09-16 10:55:10 -050011 public class TestReaderForUrlEncoded
12 {
csharptesteac64a52011-10-04 13:43:26 -050013 [TestMethod]
csharptest2cf6e1b2011-09-16 10:55:10 -050014 public void Example_FromQueryString()
15 {
16 Uri sampleUri = new Uri("http://sample.com/Path/File.ext?text=two+three%20four&valid=true&numbers=1&numbers=2", UriKind.Absolute);
17
18 ICodedInputStream input = FormUrlEncodedReader.CreateInstance(sampleUri.Query);
19
20 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
21 builder.MergeFrom(input);
22
23 TestXmlMessage message = builder.Build();
24 Assert.AreEqual(true, message.Valid);
25 Assert.AreEqual("two three four", message.Text);
26 Assert.AreEqual(2, message.NumbersCount);
27 Assert.AreEqual(1, message.NumbersList[0]);
28 Assert.AreEqual(2, message.NumbersList[1]);
29 }
30
csharptesteac64a52011-10-04 13:43:26 -050031 [TestMethod]
csharptest2cf6e1b2011-09-16 10:55:10 -050032 public void Example_FromFormData()
33 {
34 Stream rawPost = new MemoryStream(Encoding.UTF8.GetBytes("text=two+three%20four&valid=true&numbers=1&numbers=2"), false);
35
36 ICodedInputStream input = FormUrlEncodedReader.CreateInstance(rawPost);
37
38 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
39 builder.MergeFrom(input);
40
41 TestXmlMessage message = builder.Build();
42 Assert.AreEqual(true, message.Valid);
43 Assert.AreEqual("two three four", message.Text);
44 Assert.AreEqual(2, message.NumbersCount);
45 Assert.AreEqual(1, message.NumbersList[0]);
46 Assert.AreEqual(2, message.NumbersList[1]);
47 }
48
csharptesteac64a52011-10-04 13:43:26 -050049 [TestMethod]
csharptest2cf6e1b2011-09-16 10:55:10 -050050 public void TestEmptyValues()
51 {
52 ICodedInputStream input = FormUrlEncodedReader.CreateInstance("valid=true&text=&numbers=1");
53 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
54 builder.MergeFrom(input);
55
56 Assert.IsTrue(builder.Valid);
57 Assert.IsTrue(builder.HasText);
58 Assert.AreEqual("", builder.Text);
59 Assert.AreEqual(1, builder.NumbersCount);
60 Assert.AreEqual(1, builder.NumbersList[0]);
61 }
62
csharptesteac64a52011-10-04 13:43:26 -050063 [TestMethod]
csharptest2cf6e1b2011-09-16 10:55:10 -050064 public void TestNoValue()
65 {
66 ICodedInputStream input = FormUrlEncodedReader.CreateInstance("valid=true&text&numbers=1");
67 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
68 builder.MergeFrom(input);
69
70 Assert.IsTrue(builder.Valid);
71 Assert.IsTrue(builder.HasText);
72 Assert.AreEqual("", builder.Text);
73 Assert.AreEqual(1, builder.NumbersCount);
74 Assert.AreEqual(1, builder.NumbersList[0]);
75 }
76
csharptesteac64a52011-10-04 13:43:26 -050077 [TestMethod, ExpectedException(typeof(NotSupportedException))]
csharptest2cf6e1b2011-09-16 10:55:10 -050078 public void FormUrlEncodedReaderDoesNotSupportChildren()
79 {
80 ICodedInputStream input = FormUrlEncodedReader.CreateInstance("child=uh0");
81 TestXmlMessage.CreateBuilder().MergeFrom(input);
82 }
83 }
84}