csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 1 | using System;
|
| 2 | using System.IO;
|
| 3 | using System.Text;
|
csharptest | eac64a5 | 2011-10-04 13:43:26 -0500 | [diff] [blame^] | 4 | using Microsoft.VisualStudio.TestTools.UnitTesting;
|
csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 5 | using Google.ProtocolBuffers.TestProtos;
|
| 6 | using Google.ProtocolBuffers.Serialization.Http;
|
| 7 |
|
| 8 | namespace Google.ProtocolBuffers
|
| 9 | {
|
csharptest | eac64a5 | 2011-10-04 13:43:26 -0500 | [diff] [blame^] | 10 | [TestClass]
|
csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 11 | public class TestReaderForUrlEncoded
|
| 12 | {
|
csharptest | eac64a5 | 2011-10-04 13:43:26 -0500 | [diff] [blame^] | 13 | [TestMethod]
|
csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 14 | 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 |
|
csharptest | eac64a5 | 2011-10-04 13:43:26 -0500 | [diff] [blame^] | 31 | [TestMethod]
|
csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 32 | 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 |
|
csharptest | eac64a5 | 2011-10-04 13:43:26 -0500 | [diff] [blame^] | 49 | [TestMethod]
|
csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 50 | 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 |
|
csharptest | eac64a5 | 2011-10-04 13:43:26 -0500 | [diff] [blame^] | 63 | [TestMethod]
|
csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 64 | 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 |
|
csharptest | eac64a5 | 2011-10-04 13:43:26 -0500 | [diff] [blame^] | 77 | [TestMethod, ExpectedException(typeof(NotSupportedException))]
|
csharptest | 2cf6e1b | 2011-09-16 10:55:10 -0500 | [diff] [blame] | 78 | public void FormUrlEncodedReaderDoesNotSupportChildren()
|
| 79 | {
|
| 80 | ICodedInputStream input = FormUrlEncodedReader.CreateInstance("child=uh0");
|
| 81 | TestXmlMessage.CreateBuilder().MergeFrom(input);
|
| 82 | }
|
| 83 | }
|
| 84 | }
|