diff --git a/Tests/FileSystem/Sources/IoTest.cs b/Tests/FileSystem/Sources/IoTest.cs index 322caf41..7f5ee062 100644 --- a/Tests/FileSystem/Sources/IoTest.cs +++ b/Tests/FileSystem/Sources/IoTest.cs @@ -19,8 +19,10 @@ namespace Cube.FileSystem.Tests; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; +using System.Text; using Cube.Tests; using NUnit.Framework; @@ -423,6 +425,64 @@ public void Move_FileNotFoundException(int id, IoController controller) Assert.That(() => Io.Move(src, dest, true), Throws.TypeOf()); } + /* --------------------------------------------------------------------- */ + /// + /// Copy_NameTooLong + /// + /// + /// Tests when too long file name is specified. + /// + /// + /* --------------------------------------------------------------------- */ + [TestCaseSource(nameof(TestCases))] + public void Copy_NameTooLong(int id, IoController controller) + { + Io.Configure(controller); + + var ss = new StringBuilder(); + ss.Append($"{nameof(Copy_NameTooLong)}-{id}-"); + for (var i = 0; i < 250; ++i) ss.Append(0); + ss.Append(".txt"); + + var dest = Get(ss.ToString()); + var src = GetSource("Sample.txt"); + Assert.That(() => Io.Copy(src, dest, true), Throws.TypeOf()); + } + + /* --------------------------------------------------------------------- */ + /// + /// Copy_PathTooLong + /// + /// + /// Tests when too long file name is specified. + /// + /// + /* --------------------------------------------------------------------- */ + [TestCaseSource(nameof(TestCases))] + public void Copy_PathTooLong(int id, IoController controller) + { + Io.Configure(controller); + + try + { + var root = $"{nameof(Copy_PathTooLong)}-{id}"; + var ss = new StringBuilder(); + ss.Append($@"{root}\"); + for (var i = 0; i < 9; ++i) ss.Append($@"{i}000000000000000000000000000000\"); + ss.Append("Sample.txt"); + + var dest = Get(ss.ToString()); + var src = GetSource("Sample.txt"); + Io.Copy(src, dest, true); + Io.Delete(Get(root)); + Assert.That(id, Is.EqualTo(2)); // AlphaFS + } + catch (Exception e) { + Assert.That(id, Is.EqualTo(1)); // System.IO + Assert.That(e, Is.TypeOf()); + } + } + /* --------------------------------------------------------------------- */ /// /// Open_FileNotFoundException @@ -476,8 +536,8 @@ private static IEnumerable TestCases get { var n = 0; - yield return new TestCaseData(n++, new IoController()); - yield return new TestCaseData(n++, new AlphaFS.IoController()); + yield return new TestCaseData(++n, new IoController()); + yield return new TestCaseData(++n, new AlphaFS.IoController()); } }