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