|
| 1 | +using System.Text; |
1 | 2 | using D2SSharp.Model; |
2 | 3 | using Xunit; |
3 | 4 |
|
@@ -164,6 +165,53 @@ public void Overlay_NameProperty(string resourcePath) |
164 | 165 | Assert.True(D2Save.VerifyChecksum(data)); |
165 | 166 | } |
166 | 167 |
|
| 168 | + [Fact] |
| 169 | + public void Overlay_NameSetter_ImmediateReadback_UTF8() |
| 170 | + { |
| 171 | + var data = File.ReadAllBytes("Resources/99/Soska.d2s"); |
| 172 | + ref var layout = ref D2SaveLayout.From(data); |
| 173 | + |
| 174 | + var newName = "Ahą闱"; |
| 175 | + |
| 176 | + // Set the name |
| 177 | + layout.Name = newName; |
| 178 | + |
| 179 | + // Immediately read back - should show new value |
| 180 | + Assert.Equal(newName, layout.Name); |
| 181 | + |
| 182 | + // Also verify the underlying bytes changed |
| 183 | + var nameBytes = Encoding.UTF8.GetBytes(layout.Name); |
| 184 | + var expectedBytes = Encoding.UTF8.GetBytes(newName); |
| 185 | + Assert.Equal(expectedBytes, nameBytes); |
| 186 | + |
| 187 | + var save = D2Save.Read(data); |
| 188 | + var saveNameBytes = Encoding.UTF8.GetBytes(save.Character.Preview.Name); |
| 189 | + Assert.Equal(newName, save.Character.Preview.Name); |
| 190 | + Assert.Equal(expectedBytes, saveNameBytes); |
| 191 | + } |
| 192 | + |
| 193 | + [Fact] |
| 194 | + public void Overlay_NameSetter_ImmediateReadback_ASCII() |
| 195 | + { |
| 196 | + var data = File.ReadAllBytes("Resources/96/Soska.d2s"); |
| 197 | + ref var layout = ref D2SaveLayout.From(data); |
| 198 | + |
| 199 | + var newName = "Ahą闱"; |
| 200 | + |
| 201 | + // Set the name |
| 202 | + layout.Name = newName; |
| 203 | + |
| 204 | + // Immediately read back - should show new value |
| 205 | + Assert.NotEqual(newName, layout.Name); |
| 206 | + |
| 207 | + var expectedBytes = Encoding.UTF8.GetBytes(newName); |
| 208 | + |
| 209 | + var save = D2Save.Read(data); |
| 210 | + var saveNameBytes = Encoding.UTF8.GetBytes(save.Character.Name); |
| 211 | + Assert.NotEqual(newName, save.Character.Preview.Name); |
| 212 | + Assert.NotEqual(expectedBytes, saveNameBytes); |
| 213 | + } |
| 214 | + |
167 | 215 | [Theory] |
168 | 216 | [InlineData("Resources/97/Amazon.d2s")] |
169 | 217 | public void Overlay_UnlockAllWaypointsAndVerify(string resourcePath) |
|
0 commit comments