public void ReadTest() { var Cso = new Cso(File.OpenRead("../../../TestInput/cube.cso")); var IsoBytes = File.ReadAllBytes("../../../TestInput/cube.iso"); var CsoStream = new CsoProxyStream(Cso); Assert.AreEqual(0x72800, CsoStream.Length); var Data = new byte[2048]; var Data2 = new byte[3000]; Assert.AreEqual(Data.Length, CsoStream.Read(Data, 0, Data.Length)); Assert.AreEqual(Data.Length, CsoStream.Read(Data, 0, Data.Length)); Assert.AreEqual(3000, CsoStream.Read(Data2, 0, 3000)); CsoStream.Position = 0x72800 - Data.Length; Assert.AreEqual(Data.Length, CsoStream.Read(Data, 0, Data.Length)); CsoStream.Position = 0x72800 - 10; Assert.AreEqual(10, CsoStream.Read(Data, 0, 10)); CsoStream.Position = 0x72800 - 10; Assert.AreEqual(10, CsoStream.Read(Data, 0, 100)); CollectionAssert.AreEqual( IsoBytes, CsoStream.ReadAll(true) ); CsoStream.Position = 0x10 * 2048 - 100; CollectionAssert.AreEqual( IsoBytes.Slice(0x10 * 2048 - 100, 300), CsoStream.ReadBytes(300) ); }
public IsoFile SetIso(string IsoFile) { var IsoFileStream = (Stream)File.OpenRead(IsoFile); string DetectedFormat; switch (DetectedFormat = new FormatDetector().Detect(IsoFileStream)) { case "Cso": IsoFileStream = new CsoProxyStream(new Cso(IsoFileStream)); break; case "Iso": break; default: throw (new InvalidDataException("Can't set an ISO for '" + DetectedFormat + "'")); } //"../../../TestInput/cube.iso" var Iso = new IsoFile(IsoFileStream, IsoFile); var Umd = new HleIoDriverIso(Iso); HleState.HleIoManager.SetDriver("disc:", Umd); HleState.HleIoManager.SetDriver(":", Umd); return(Iso); }