Skip to content

Commit de5d75c

Browse files
author
rstam
committed
Merge commit '36b2a5441105b27055592023270c250a1b57ee30' into uri
2 parents f52c26d + 36b2a54 commit de5d75c

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

Bson/Serialization/Serializers/NetPrimitiveSerializers.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,7 +1980,7 @@ public override object Deserialize(
19801980
bsonReader.ReadNull();
19811981
return null;
19821982
case BsonType.String:
1983-
return new Uri(bsonReader.ReadString());
1983+
return new Uri(bsonReader.ReadString(), UriKind.RelativeOrAbsolute);
19841984
default:
19851985
var message = string.Format("Cannot deserialize Uri from BsonType {0}.", bsonType);
19861986
throw new FileFormatException(message);
@@ -2006,7 +2006,7 @@ public override void Serialize(
20062006
}
20072007
else
20082008
{
2009-
bsonWriter.WriteString(((Uri)value).AbsoluteUri);
2009+
bsonWriter.WriteString(((Uri)value).OriginalString);
20102010
}
20112011
}
20122012
}

BsonUnitTests/DefaultSerializer/Serializers/NetPrimitiveSerializerTests.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1786,14 +1786,30 @@ public void TestHttp()
17861786
V = new Uri("http://www.cnn.com")
17871787
};
17881788
var json = obj.ToJson();
1789-
var expected = "{ 'V' : 'http://www.cnn.com/' }".Replace("'", "\"");
1789+
var expected = "{ 'V' : 'http://www.cnn.com' }".Replace("'", "\"");
17901790
Assert.AreEqual(expected, json);
17911791

17921792
var bson = obj.ToBson();
17931793
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
17941794
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
17951795
}
17961796

1797+
[Test]
1798+
public void TestRelative()
1799+
{
1800+
var obj = new TestClass
1801+
{
1802+
V = new Uri("/relative/page.html", UriKind.RelativeOrAbsolute)
1803+
};
1804+
var json = obj.ToJson();
1805+
var expected = "{ 'V' : '/relative/page.html' }".Replace("'", "\"");
1806+
Assert.AreEqual(expected, json);
1807+
1808+
var bson = obj.ToBson();
1809+
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
1810+
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
1811+
}
1812+
17971813
[Test]
17981814
public void TestMongoDB()
17991815
{

0 commit comments

Comments
 (0)