Files
Hasebe/Library/PackageCache/com.unity.addressables@42676f2a154e/Tests/Editor/ProjectConfigDataSerializationTests.cs
T
2026-09-21 12:15:57 +03:00

188 lines
6.0 KiB
C#

#if UNITY_6000_0_OR_NEWER
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
using NUnit.Framework;
using UnityEditor.AddressableAssets.Settings;
namespace UnityEditor.AddressableAssets.Tests
{
/// <summary>
/// Tests for ProjectConfigData serialization.
/// These tests verify the new DataContractSerializer-based serialization works correctly.
/// </summary>
public class ProjectConfigDataSerializationTests
{
private string m_OriginalDataPath;
private string m_TempDir;
private string m_TempDataPath;
[SetUp]
public void Setup()
{
m_TempDir = Path.Combine(Path.GetTempPath(), "ProjectConfigDataTests_" + Guid.NewGuid().ToString("N"));
Directory.CreateDirectory(m_TempDir);
// Store original path and redirect to temp location
m_OriginalDataPath = Path.GetFullPath(".").Replace("\\", "/") + "/Library/AddressablesConfig.dat";
m_TempDataPath = Path.Combine(m_TempDir, "AddressablesConfig.dat");
}
[TearDown]
public void TearDown()
{
if (Directory.Exists(m_TempDir))
{
Directory.Delete(m_TempDir, true);
}
}
[Test]
public void ProjectConfigData_ActivePlayModeIndex_PersistsAcrossAccess()
{
// This test verifies that the property works correctly
// Note: We can't easily test file persistence without affecting the real config
var originalValue = ProjectConfigData.ActivePlayModeIndex;
// Just verify we can read it without error
Assert.GreaterOrEqual(originalValue, 0);
}
[Test]
public void ProjectConfigData_GenerateBuildLayout_CanBeReadAndWritten()
{
var originalValue = ProjectConfigData.GenerateBuildLayout;
try
{
ProjectConfigData.GenerateBuildLayout = !originalValue;
Assert.AreEqual(!originalValue, ProjectConfigData.GenerateBuildLayout);
}
finally
{
// Restore original value
ProjectConfigData.GenerateBuildLayout = originalValue;
}
}
[Test]
public void ProjectConfigData_HierarchicalSearch_CanBeReadAndWritten()
{
var originalValue = ProjectConfigData.HierarchicalSearch;
try
{
ProjectConfigData.HierarchicalSearch = !originalValue;
Assert.AreEqual(!originalValue, ProjectConfigData.HierarchicalSearch);
}
finally
{
ProjectConfigData.HierarchicalSearch = originalValue;
}
}
[Test]
public void ProjectConfigData_ShowGroupsAsHierarchy_CanBeReadAndWritten()
{
var originalValue = ProjectConfigData.ShowGroupsAsHierarchy;
try
{
ProjectConfigData.ShowGroupsAsHierarchy = !originalValue;
Assert.AreEqual(!originalValue, ProjectConfigData.ShowGroupsAsHierarchy);
}
finally
{
ProjectConfigData.ShowGroupsAsHierarchy = originalValue;
}
}
[Test]
public void ProjectConfigData_LocalLoadSpeed_CanBeReadAndWritten()
{
var originalValue = ProjectConfigData.LocalLoadSpeed;
try
{
ProjectConfigData.LocalLoadSpeed = 12345678;
Assert.AreEqual(12345678, ProjectConfigData.LocalLoadSpeed);
}
finally
{
ProjectConfigData.LocalLoadSpeed = originalValue;
}
}
[Test]
public void ProjectConfigData_RemoteLoadSpeed_CanBeReadAndWritten()
{
var originalValue = ProjectConfigData.RemoteLoadSpeed;
try
{
ProjectConfigData.RemoteLoadSpeed = 87654321;
Assert.AreEqual(87654321, ProjectConfigData.RemoteLoadSpeed);
}
finally
{
ProjectConfigData.RemoteLoadSpeed = originalValue;
}
}
[Test]
public void ProjectConfigData_BuildLayoutReportFileFormat_CanBeReadAndWritten()
{
var originalValue = ProjectConfigData.BuildLayoutReportFileFormat;
try
{
var newValue = originalValue == ProjectConfigData.ReportFileFormat.JSON
? ProjectConfigData.ReportFileFormat.TXT
: ProjectConfigData.ReportFileFormat.JSON;
ProjectConfigData.BuildLayoutReportFileFormat = newValue;
Assert.AreEqual(newValue, ProjectConfigData.BuildLayoutReportFileFormat);
}
finally
{
ProjectConfigData.BuildLayoutReportFileFormat = originalValue;
}
}
[Test]
public void ProjectConfigData_BuildReportFilePaths_CanAddAndRemove()
{
var testPath = "test/path/to/report_" + Guid.NewGuid().ToString("N") + ".json";
try
{
ProjectConfigData.AddBuildReportFilePath(testPath);
Assert.IsTrue(ProjectConfigData.BuildReportFilePaths.Contains(testPath));
}
finally
{
ProjectConfigData.RemoveBuildReportFilePath(testPath);
Assert.IsFalse(ProjectConfigData.BuildReportFilePaths.Contains(testPath));
}
}
[Test]
public void ProjectConfigData_ShowSubObjectsInGroupView_CanBeReadAndWritten()
{
var originalValue = ProjectConfigData.ShowSubObjectsInGroupView;
try
{
ProjectConfigData.ShowSubObjectsInGroupView = !originalValue;
Assert.AreEqual(!originalValue, ProjectConfigData.ShowSubObjectsInGroupView);
}
finally
{
ProjectConfigData.ShowSubObjectsInGroupView = originalValue;
}
}
}
}
#endif