Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions SabreTools.Metadata.Filter.Test/FilterObjectTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Globalization;
using SabreTools.Data.Models.Metadata;
using SabreTools.Hashing;
using Xunit;
Expand Down Expand Up @@ -1022,6 +1023,20 @@ public void Matches_Display(string itemField, string value)
Assert.True(actual);
}

[Theory]
[InlineData("en-US")]
[InlineData("de-DE")]
[InlineData("fr-FR")]
public void Matches_DisplayRefresh_CurrentCultureIgnored(string culture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture);
var filter = new FilterObject("display.refresh", "123.45", Operation.Equals);
Display obj = new Display { Refresh = 123.45 };

bool actual = filter.Matches(obj);
Assert.True(actual);
}

#endregion

#region Driver
Expand Down Expand Up @@ -2085,6 +2100,20 @@ public void Matches_Video(string itemField, string value)
Assert.True(actual);
}

[Theory]
[InlineData("en-US")]
[InlineData("de-DE")]
[InlineData("fr-FR")]
public void Matches_VideoRefresh_CurrentCultureIgnored(string culture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture);
var filter = new FilterObject("video.refresh", "123.45", Operation.Equals);
Video obj = new Video { Refresh = 123.45 };

bool actual = filter.Matches(obj);
Assert.True(actual);
}

#endregion
}
}
5 changes: 3 additions & 2 deletions SabreTools.Metadata.Filter/FilterObject.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Globalization;
using System.Text.RegularExpressions;
using SabreTools.Data.Extensions;
using SabreTools.Data.Models.Metadata;
Expand Down Expand Up @@ -1134,7 +1135,7 @@ private static bool GetCheckValue(Display obj, string fieldName, out string? che
return true;
case "refresh":
case "freq":
checkValue = obj.Refresh?.ToString();
checkValue = obj.Refresh?.ToString(CultureInfo.InvariantCulture);
return true;
case "rotate":
case "orientation":
Expand Down Expand Up @@ -2512,7 +2513,7 @@ private static bool GetCheckValue(Video obj, string fieldName, out string? check
return true;
case "refresh":
case "freq":
checkValue = obj.Refresh?.ToString();
checkValue = obj.Refresh?.ToString(CultureInfo.InvariantCulture);
return true;
case "displaytype":
case "screen":
Expand Down
20 changes: 20 additions & 0 deletions SabreTools.Serialization.Readers.Test/ClrMameProTests.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Linq;
using Xunit;
Expand Down Expand Up @@ -171,6 +172,25 @@ public void RoundTripMachineWithoutQuotesTest()
Validate(newGame);
}

[Theory]
[InlineData("en-US")]
[InlineData("de-DE")]
[InlineData("fr-FR")]
public void SerializeFreq_CurrentCultureIgnored(string culture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture);
var serializer = new Writers.ClrMamePro();

// Serialize to stream
Stream? actual = serializer.SerializeStream(Build(game: false));
Assert.NotNull(actual);

// Validate the freq value
string dat = new StreamReader(actual).ReadToEnd();
Assert.Contains("123.450000", dat);
Assert.DoesNotContain("123,45", dat);
}

/// <summary>
/// Build model for serialization and deserialization
/// </summary>
Expand Down
20 changes: 20 additions & 0 deletions SabreTools.Serialization.Readers.Test/ListxmlTests.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Linq;
using Xunit;
Expand Down Expand Up @@ -125,6 +126,25 @@ public void RoundTripMachineTest()
Validate(newGame);
}

[Theory]
[InlineData("en-US")]
[InlineData("de-DE")]
[InlineData("fr-FR")]
public void SerializeRefresh_CurrentCultureIgnored(string culture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture);
var serializer = new Writers.Listxml();

// Serialize to stream
Stream? actual = serializer.SerializeStream(Build(game: false));
Assert.NotNull(actual);

// Validate the refresh values
string xml = new StreamReader(actual).ReadToEnd();
Assert.Contains("refresh=\"123.450000\"", xml);
Assert.DoesNotContain("123,45", xml);
}

/// <summary>
/// Build model for serialization and deserialization
/// </summary>
Expand Down
20 changes: 20 additions & 0 deletions SabreTools.Serialization.Readers.Test/M1Tests.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Linq;
using Xunit;
Expand Down Expand Up @@ -121,6 +122,25 @@ public void RoundTripMachineTest()
Validate(newGame);
}

[Theory]
[InlineData("en-US")]
[InlineData("de-DE")]
[InlineData("fr-FR")]
public void SerializeRefresh_CurrentCultureIgnored(string culture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture);
var serializer = new Writers.M1();

// Serialize to stream
Stream? actual = serializer.SerializeStream(Build(game: false));
Assert.NotNull(actual);

// Validate the refresh values
string xml = new StreamReader(actual).ReadToEnd();
Assert.Contains("refresh=\"123.450000\"", xml);
Assert.DoesNotContain("123,45", xml);
}

/// <summary>
/// Build model for serialization and deserialization
/// </summary>
Expand Down
20 changes: 20 additions & 0 deletions SabreTools.Serialization.Readers.Test/MessTests.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Linq;
using Xunit;
Expand Down Expand Up @@ -121,6 +122,25 @@ public void RoundTripMachineTest()
Validate(newGame);
}

[Theory]
[InlineData("en-US")]
[InlineData("de-DE")]
[InlineData("fr-FR")]
public void SerializeRefresh_CurrentCultureIgnored(string culture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture);
var serializer = new Writers.Mess();

// Serialize to stream
Stream? actual = serializer.SerializeStream(Build(game: false));
Assert.NotNull(actual);

// Validate the refresh values
string xml = new StreamReader(actual).ReadToEnd();
Assert.Contains("refresh=\"123.450000\"", xml);
Assert.DoesNotContain("123,45", xml);
}

/// <summary>
/// Build model for serialization and deserialization
/// </summary>
Expand Down
3 changes: 2 additions & 1 deletion SabreTools.Serialization.Writers/ClrMamePro.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Text;
using SabreTools.Data.Extensions;
Expand Down Expand Up @@ -419,7 +420,7 @@ private static void WriteVideos(Video[]? videos, Writer writer)
writer.WriteOptionalAttributeString("y", video.Y.ToString());
writer.WriteOptionalAttributeString("aspectx", video.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", video.AspectY.ToString());
writer.WriteOptionalAttributeString("freq", video.Freq?.ToString("0.000000"));
writer.WriteOptionalAttributeString("freq", video.Freq?.ToString("0.000000", CultureInfo.InvariantCulture));
writer.WriteEndElement(); // video
}
}
Expand Down
5 changes: 3 additions & 2 deletions SabreTools.Serialization.Writers/Listxml.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Text;
using System.Xml;
Expand Down Expand Up @@ -395,7 +396,7 @@ private static void WriteDisplay(Display obj, XmlTextWriter writer)
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width?.ToString());
writer.WriteOptionalAttributeString("height", obj.Height?.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000", CultureInfo.InvariantCulture));
writer.WriteOptionalAttributeString("pixclock", obj.PixClock?.ToString());
writer.WriteOptionalAttributeString("htotal", obj.HTotal?.ToString());
writer.WriteOptionalAttributeString("hbend", obj.HBEnd?.ToString());
Expand Down Expand Up @@ -843,7 +844,7 @@ private static void WriteVideo(Video obj, XmlTextWriter writer)
writer.WriteOptionalAttributeString("height", obj.Height.ToString());
writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000", CultureInfo.InvariantCulture));

writer.WriteEndElement();
}
Expand Down
5 changes: 3 additions & 2 deletions SabreTools.Serialization.Writers/M1.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Text;
using System.Xml;
Expand Down Expand Up @@ -393,7 +394,7 @@ private static void WriteDisplay(Display obj, XmlTextWriter writer)
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width?.ToString());
writer.WriteOptionalAttributeString("height", obj.Height?.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000", CultureInfo.InvariantCulture));
writer.WriteOptionalAttributeString("pixclock", obj.PixClock?.ToString());
writer.WriteOptionalAttributeString("htotal", obj.HTotal?.ToString());
writer.WriteOptionalAttributeString("hbend", obj.HBEnd?.ToString());
Expand Down Expand Up @@ -841,7 +842,7 @@ private static void WriteVideo(Video obj, XmlTextWriter writer)
writer.WriteOptionalAttributeString("height", obj.Height.ToString());
writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000", CultureInfo.InvariantCulture));

writer.WriteEndElement();
}
Expand Down
5 changes: 3 additions & 2 deletions SabreTools.Serialization.Writers/Mess.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.IO;
using System.Text;
using System.Xml;
Expand Down Expand Up @@ -393,7 +394,7 @@ private static void WriteDisplay(Display obj, XmlTextWriter writer)
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width?.ToString());
writer.WriteOptionalAttributeString("height", obj.Height?.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000", CultureInfo.InvariantCulture));
writer.WriteOptionalAttributeString("pixclock", obj.PixClock?.ToString());
writer.WriteOptionalAttributeString("htotal", obj.HTotal?.ToString());
writer.WriteOptionalAttributeString("hbend", obj.HBEnd?.ToString());
Expand Down Expand Up @@ -841,7 +842,7 @@ private static void WriteVideo(Video obj, XmlTextWriter writer)
writer.WriteOptionalAttributeString("height", obj.Height.ToString());
writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000", CultureInfo.InvariantCulture));

writer.WriteEndElement();
}
Expand Down
Loading