public void CompilePharoCoreKernelObjectsForNodeJs() { ChunkReader chunkReader = new ChunkReader(@"PharoCoreKernelObjects.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); reader.Process(model); this.compiler.Visit(model); this.writer.Close(); string output = this.writer.ToString(); // TODO more tests Assert.IsTrue(ContainsLine(output, "function Object()")); Assert.IsTrue(ContainsLine(output, "ObjectClass.__super = ProtoObjectClass;")); Assert.IsTrue(ContainsLine(output, "Object.__super = ProtoObject;")); Assert.IsTrue(ContainsLine(output, "ObjectClass.prototype.__proto__ = ProtoObjectClass.prototype;")); Assert.IsTrue(ContainsLine(output, "Object.prototype.__proto__ = ProtoObject.prototype;")); Assert.IsTrue(ContainsLine(output, "BooleanClass.prototype.__proto__ = ObjectClass.prototype;")); Assert.IsTrue(ContainsLine(output, "Boolean.prototype.__proto__ = Object.prototype;")); Assert.IsTrue(ContainsLine(output, "function Boolean()")); Assert.IsTrue(ContainsLine(output, "exports.Object = Object;")); Assert.IsTrue(ContainsLine(output, "exports.Boolean = Boolean;")); Assert.IsTrue(ContainsLine(output, "exports.ProtoObject = ProtoObject;")); }
public static void Main(string[] args) { StreamWriter swriter = new StreamWriter(GetOutputFileName(args)); SourceWriter writer = new SourceWriter(swriter); CodeModel model = new CodeModel(); Compilers.Javascript.Compiler compiler = null; string target = GetTarget(args); if (target == "node") compiler = new NodeCompiler(writer); else if (target == "browser") compiler = new BrowserCompiler(writer); else if (target == "vm") compiler = new VirtualMachineCompiler(writer); else throw new ArgumentException("Invalid target"); foreach (string filename in GetFileNames(args)) { ChunkReader chunkReader = new ChunkReader(filename); CodeReader reader = new CodeReader(chunkReader); reader.Process(model); } compiler.Visit(model); swriter.Close(); }
public void ReadLibraryBehavior() { ChunkReader reader = new ChunkReader(@"Behavior.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); reader.Close(); }
public void CompilePharoCorePointForNodeJs() { ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st"); CodeReader coreReader = new CodeReader(chunkCoreReader); ChunkReader chunkReader = new ChunkReader(@"PharoCorePoint.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); coreReader.Process(model); reader.Process(model); this.compiler.Visit(model); this.writer.Close(); string output = this.writer.ToString(); Assert.IsTrue(ContainsLine(output, "var base = require('./js/ajtalk-base.js');")); Assert.IsTrue(ContainsLine(output, "var send = base.send;")); Assert.IsTrue(ContainsLine(output, "var sendSuper = base.sendSuper;")); Assert.IsTrue(ContainsLine(output, "var primitives = require('./js/ajtalk-primitives.js');")); Assert.IsTrue(ContainsLine(output, "function Point()")); Assert.IsTrue(ContainsLine(output, "PointClass.__super = ObjectClass;")); Assert.IsTrue(ContainsLine(output, "Point.__super = Object;")); Assert.IsTrue(ContainsLine(output, "PointClass.prototype.__proto__ = ObjectClass.prototype;")); Assert.IsTrue(ContainsLine(output, "Point.prototype.__proto__ = Object.prototype;")); Assert.IsTrue(ContainsLine(output, "exports.Point = Point;")); Assert.IsTrue(ContainsLine(output, "Point.prototype.$x = null;")); Assert.IsTrue(ContainsLine(output, "Point.prototype.$y = null;")); }
protected override async ValueTask <(GitIdType IdType, int ChunkCount, long ChunkTableOffset)> ReadHeaderAsync() { if (ChunkReader is null) { throw new InvalidOperationException(); } var headerBuffer = new byte[8]; if (await ChunkReader.ReadAtAsync(0, headerBuffer).ConfigureAwait(false) != headerBuffer.Length) { return(GitIdType.None, 0, -1); } if (!"CGPH\x01".Select(x => (byte)x).SequenceEqual(headerBuffer.Take(5))) { return(GitIdType.None, 0, -1); } var idType = (GitIdType)headerBuffer[5]; int chunkCount = headerBuffer[6]; int baseCommitGraphs = headerBuffer[7]; if (baseCommitGraphs <= 0) { _baseCommitGraphs = -1; } else { _baseCommitGraphs = baseCommitGraphs; } return(idType, chunkCount, headerBuffer.Length); }
/// <summary> /// Loads data into a <see cref="Vault" /> instance. /// </summary> /// <param name="vault">The vault to be read and loaded.</param> /// <param name="loadingWrapper">The provider of the vault stream readers.</param> public void LoadVault(Vault vault, VaultLoadingWrapper loadingWrapper) { Debug.Assert(vault.Database == null, "vault.Database == null"); Debug.Assert(vault.BinStream != null, "vault.BinStream != null"); Debug.Assert(vault.VltStream != null, "vault.VltStream != null"); vault.Database = this; BinaryReader binStreamReader = loadingWrapper.BinReader; BinaryReader vltStreamReader = loadingWrapper.VltReader; ChunkReader binChunkReader = new ChunkReader(binStreamReader); ChunkReader vltChunkReader = new ChunkReader(vltStreamReader); //Debug.WriteLine("Processing BIN chunks"); processBinChunks(vault, binChunkReader); //Debug.WriteLine("Processing VLT chunks"); processVltChunks(vault, vltChunkReader); //Debug.WriteLine("Processing pointers"); fixPointers(vault, VltPointerType.Bin, vault.BinStream); fixPointers(vault, VltPointerType.Vlt, vault.VltStream); //Debug.WriteLine("Reading exports"); ReadExports(vault, vltStreamReader, binStreamReader); Vaults.Add(vault); }
protected ValueTask <int> ReadFromChunkAsync(string chunkType, long position, byte[] buffer, int length) { if (_chunks == null || ChunkReader == null) { return(new ValueTask <int>(0)); } else if (length <= 0) { throw new ArgumentOutOfRangeException(nameof(length)); } Chunk?ch = null; foreach (var c in _chunks) { if (c.Name == chunkType) { ch = c; break; } } if (ch == null) { return(new ValueTask <int>(0)); } int requested = (int)Math.Min(length, ch.Value.Length - position); if (requested <= 0) { return(new ValueTask <int>(0)); } return(ChunkReader.ReadAtAsync(ch.Value.Position + position, buffer, requested)); }
public void ReadChunksWithExclamationMarksAndSpace() { ChunkReader reader = new ChunkReader(@"FileOut01.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.Contains("\r")); Assert.IsTrue(chunk.Contains("\r\n")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.AreEqual(" ", chunk); reader.Close(); }
public void TrickyEmbedTest() { WithFile(Test).Wait(); async Task Test(string fname) { using (var writer = new ChunkWriter(fname)) { await Write(writer, Content(1, count : 1)); } byte[] chunkio = File.ReadAllBytes(fname); CollectionAssert.AreEqual(FileHeader, chunkio.Take(FileHeader.Length).ToArray()); File.Delete(fname); using (var writer = new ChunkWriter(fname)) { await Write(writer, Content(1, count : MeterInterval)); } using (var file = new FileStream(fname, FileMode.Open, FileAccess.Write)) { Assert.AreEqual(MeterInterval + 2 * Meter.Size + ChunkHeader.Size, file.Length); file.SetLength(MeterInterval); } using (var writer = new ChunkWriter(fname)) { await Write(writer, chunkio); } using (var reader = new ChunkReader(fname)) { IChunk chunk = await reader.ReadFirstAsync(1, long.MaxValue); Assert.IsNotNull(chunk); byte[] content = new byte[chunk.ContentLength]; Assert.IsTrue(await chunk.ReadContentAsync(content, 0)); // A naive implementation can give Content(1, 1) instead, which is an awful thing to do // because Content(1, 1) is embedded in the middle of a real chunk. CollectionAssert.AreEqual(chunkio, content); } } }
/// <summary> /// PNG画像のバイト配列からmeta情報を書き込んだバイト配列を作成します。 /// </summary> /// <param name="image">バイト配列</param> /// <param name="vrcMetaData">meta情報</param> /// <returns>meta情報を書き込んだバイト配列</returns> public static byte[] Write(ReadOnlySpan <byte> image, VrcMetaData vrcMetaData) { if (image == null) { throw new ArgumentNullException(nameof(vrcMetaData)); } if (vrcMetaData == null) { throw new ArgumentNullException(nameof(vrcMetaData)); } var chunks = ChunkReader.SplitChunks(image); // 既存のmeta情報を削除 foreach (var chunk in chunks.Where(c => VrcMetaChunk.IsVrcMetaChunk(c.TypePart)).ToArray()) { chunks.Remove(chunk); } // 受け取ったmeta情報を末尾に追加 chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.DateChunk), vrcMetaData.Date?.ToString("yyyyMMddHHmmssfff", new CultureInfo("en", false)))); chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.WorldChunk), vrcMetaData.World)); chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.PhotographerChunk), vrcMetaData.Photographer)); foreach (var user in vrcMetaData.Users) { chunks.Insert(chunks.Count - 1, new Chunk(VrcMetaChunk.ConvertToString(VrcMetaChunk.UserChunk), user.ToString())); } return(ChunkWriter.WriteImageBytes(chunks.ToArray())); }
private void bbiOpen_ItemClick(object sender, ItemClickEventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "SWARM Expriment Record File(*.serf)|*.serf"; if (ofd.ShowDialog() == DialogResult.Cancel) { return; } ChunkReader reader = new ChunkReader(ofd.FileName); BatchExperiment batch = new BatchExperiment(reader.RootChunk); InitializeExperiment(batch); if (expListForm == null) { expListForm = new UI.ExperimentInformation.ExperimentListForm(); } expListForm.BindExperiment(ctxt); expListForm.MdiParent = this; expListForm.Show(); MessageBox.Show(batch.ExperimentCount.ToString()); }
public void TrickyTruncateTest() { WithFile(Test).Wait(); async Task Test(string fname) { using (var writer = new ChunkWriter(fname)) { await Write(writer, Content(1, count : MeterInterval - Meter.Size + 1)); } using (var file = new FileStream(fname, FileMode.Open, FileAccess.Write)) { Assert.AreEqual(MeterInterval + Meter.Size + ChunkHeader.Size + 1, file.Length); file.SetLength(MeterInterval); } using (var writer = new ChunkWriter(fname)) { await Write(writer, Content(2, count : 1)); Assert.AreEqual(MeterInterval + Meter.Size + ChunkHeader.Size + 1, writer.Length); await Write(writer, Content(3, count : 1)); } using (var reader = new ChunkReader(fname)) { IChunk chunk = await reader.ReadFirstAsync(1, long.MaxValue); Assert.IsNotNull(chunk); byte[] content = new byte[chunk.ContentLength]; Assert.IsTrue(await chunk.ReadContentAsync(content, 0)); // A naive implementation can give Content(3, 1) instead of Content(2, 1), which means // effectively skipping a valid chunk. CollectionAssert.AreEqual(Content(2, count: 1), content); } } }
public void CompilePharoCorePointForBrowser() { ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st"); CodeReader coreReader = new CodeReader(chunkCoreReader); ChunkReader chunkReader = new ChunkReader(@"PharoCorePoint.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); coreReader.Process(model); reader.Process(model); this.compiler.Visit(model); this.writer.Close(); string output = this.writer.ToString(); Assert.IsTrue(ContainsLine(output, "AjTalk = function() {")); Assert.IsTrue(ContainsLine(output, "var send = base.send;")); Assert.IsTrue(ContainsLine(output, "var sendSuper = base.sendSuper;")); Assert.IsTrue(ContainsLine(output, "function Point()")); Assert.IsTrue(ContainsLine(output, "PointClass.__super = ObjectClass;")); Assert.IsTrue(ContainsLine(output, "Point.__super = Object;")); Assert.IsTrue(ContainsLine(output, "PointClass.prototype.__proto__ = ObjectClass.prototype;")); Assert.IsTrue(ContainsLine(output, "Point.prototype.__proto__ = Object.prototype;")); Assert.IsTrue(ContainsLine(output, "Point.prototype.$x = null;")); Assert.IsTrue(ContainsLine(output, "Point.prototype.$y = null;")); Assert.IsTrue(ContainsLine(output, "Point : Point")); }
private static bool LoadSoundInfos(ChunkReader chunkIO, ChunkId idOuter, Wad2 wad, ref Dictionary <long, WadSoundInfo> outSoundInfos, Dictionary <long, WadSample> samples) { if (idOuter != Wad2Chunks.SoundInfos) { return(false); } var soundInfos = new Dictionary <long, WadSoundInfo>(); chunkIO.ReadChunks((id, chunkSize) => { if (id != Wad2Chunks.SoundInfo) { return(false); } WadSoundInfo soundInfo; long index; LoadSoundInfo(chunkIO, wad, samples, out soundInfo, out index); soundInfos.Add(index, soundInfo); return(true); }); outSoundInfos = soundInfos; return(true); }
public async Task WriteThenRead_ProducesEquivalentOutput(ChunkConfiguration chunkConfig, TBody body) { var orignalChunk = new Chunk <TBody>(chunkConfig, body); var storageStream = new MemoryStream(); Serializer <TBody> chunkBodySerializer = GetBodySerializer(orignalChunk); var encodingConfiguration = new EncodingConfiguration("somePass!!", new MemoryStorageProvider(), 4096, 1024 * 1000); var decodingConfiguration = new DecodingConfiguration("somePass!!", new MemoryStorageProvider(), 4096); ChunkWriter writer = GetChunkWriter(encodingConfiguration); await writer.WriteChunkAsync(storageStream, chunkBodySerializer, orignalChunk); if (storageStream.Length == 0) { Debugger.Break(); } storageStream.Position = 0; ChunkReader reader = GetChunkReader(decodingConfiguration); Chunk <TBody> decodedChunk = await reader.ReadChunkAsync(storageStream, new ChunkInfo(chunkConfig, storageStream.Length), chunkBodySerializer); AssertEqual(orignalChunk, decodedChunk); }
public void ReadChunksWithExclamationMarksAndSpace() { ChunkReader reader = new ChunkReader(@"FileOut01.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.Contains("\r")); Assert.IsTrue(chunk.Contains("\r\n")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.AreEqual(" ", chunk); reader.Close(); }
async ValueTask ReadChunks(long chunkTableOffset, int chunkCount) { if (ChunkReader is null) { throw new InvalidOperationException(); } var chunkTable = new byte[(chunkCount + 1) * (4 + sizeof(long))]; if (await ChunkReader.ReadAtAsync(chunkTableOffset, chunkTable).ConfigureAwait(false) != chunkTable.Length) { return; } _chunks = Enumerable.Range(0, chunkCount + 1).Select(i => new Chunk { Name = (i < chunkCount) ? Encoding.ASCII.GetString(chunkTable, 12 * i, 4) : null, Position = NetBitConverter.ToInt64(chunkTable, 12 * i + 4) }).ToArray(); for (int i = 0; i < chunkCount; i++) { _chunks[i].Length = _chunks[i + 1].Position - _chunks[i].Position; } FanOut = await ReadFanOutAsync().ConfigureAwait(false); }
public void Load() { _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig); _chunkWriter = new ChunkWriter(_chunkManager); _chunkReader = new ChunkReader(_chunkManager, _chunkWriter); _chunkManager.Load(ReadMessage); }
public void Load() { _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig); _chunkWriter = new ChunkWriter(_chunkManager); _chunkReader = new ChunkReader(_chunkManager, _chunkWriter); _chunkManager.Load(ReadMessage); }
public void Load() { _bufferQueue = new BufferQueue <MessageLogRecord>("MessageBufferQueue", BrokerController.Instance.Setting.MessageWriteQueueThreshold, PersistMessages, _logger); _chunkManager = new ChunkManager("MessageChunk", BrokerController.Instance.Setting.MessageChunkConfig, BrokerController.Instance.Setting.IsMessageStoreMemoryMode); _chunkWriter = new ChunkWriter(_chunkManager); _chunkReader = new ChunkReader(_chunkManager, _chunkWriter); _chunkManager.Load(ReadMessage); }
private static bool LoadSprites(ChunkReader chunkIO, ChunkId idOuter, Wad2 wad, ref Dictionary <long, WadSprite> outSprites) { if (idOuter != Wad2Chunks.Sprites) { return(false); } var sprites = new Dictionary <long, WadSprite>(); long obsoleteIndex = 0; // Move this into each chunk once we got rid of old style *.wad2 files. chunkIO.ReadChunks((id, chunkSize) => { if (id != Wad2Chunks.Sprite) { return(false); } int width = LEB128.ReadInt(chunkIO.Raw); int height = LEB128.ReadInt(chunkIO.Raw); byte[] imageData = null; RectangleInt2 rect = new RectangleInt2(); chunkIO.ReadChunks((id2, chunkSize2) => { if (id2 == Wad2Chunks.SpriteIndex) { obsoleteIndex = chunkIO.ReadChunkLong(chunkSize2); } else if (id2 == Wad2Chunks.SpriteData) { imageData = chunkIO.ReadChunkArrayOfBytes(chunkSize2); } else if (id2 == Wad2Chunks.SpriteSides) { rect.X0 = chunkIO.Raw.ReadInt32(); rect.Y0 = chunkIO.Raw.ReadInt32(); rect.X1 = chunkIO.Raw.ReadInt32(); rect.Y1 = chunkIO.Raw.ReadInt32(); } else { return(false); } return(true); }); sprites.Add(obsoleteIndex++, new WadSprite { Texture = new WadTexture(ImageC.FromByteArray(imageData, width, height)), Alignment = rect }) ; return(true); }); outSprites = sprites; return(true); }
public RoomNameChunkReader() { _reader = new ChunkReader<RoomNameTag>("<style id=\"roomName\"", "<style id=\"\"", true); _reader.Append = (builder, result, tag) => { builder.Append(tag.Name); result.AddTag(tag); return 0; }; }
public async void ShouldThrowCancellationWhenReadAsyncIsCancelled() { var reader = new ChunkReader(AsyncTestStream.CreateCancellingStream()); var ex = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(new MemoryStream())); ex.Should().NotBeNull(); ex.Should().BeAssignableTo <OperationCanceledException>(); }
public void ProcessDoubleBang() { ChunkReader reader = new ChunkReader(new StringReader("!!new! !!new")); Assert.AreEqual("!new", reader.GetChunk()); Assert.AreEqual(" !new", reader.GetChunk()); Assert.IsNull(reader.GetChunk()); reader.Close(); }
private static byte[] ConstructMessage(byte[] buffer) { var stream = new MemoryStream(); var reader = new ChunkReader(new MemoryStream(buffer)); reader.ReadNextMessages(stream); return(stream.ToArray()); }
public static BufferLogRecord TryReadRecordBufferAt(this ChunkReader chunkReader, long position) { return(chunkReader.TryReadAt(position, recordBuffer => { var record = new BufferLogRecord(); record.ReadFrom(recordBuffer); return record; })); }
public async void ShouldThrowIOExceptionWhenReadAsyncIsFaulted() { var reader = new ChunkReader(AsyncTestStream.CreateFailingStream(new IOException("some error"))); var ex = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(new MemoryStream())); ex.Should().NotBeNull(); ex.Should().BeAssignableTo <IOException>().Which.Message.Should().Be("some error"); }
public void ProcessDoubleBang() { ChunkReader reader = new ChunkReader(new StringReader("!!new! !!new")); Assert.AreEqual("!new", reader.GetChunk()); Assert.AreEqual(" !new", reader.GetChunk()); Assert.IsNull(reader.GetChunk()); reader.Close(); }
public async void ShouldThrowIOExceptionWhenReadAsyncReturnsZeroOrLess(int returnValue) { var reader = new ChunkReader(AsyncTestStream.CreateStream(Task.FromResult(returnValue))); var ex = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(new MemoryStream())); ex.Should().NotBeNull(); ex.Should().BeAssignableTo <IOException>().Which.Message.Should().StartWith("Unexpected end of stream, read returned"); }
public CsvReader(Stream source, Encoding encoding, Config config = default(Config)) { _currentChunk = null; _currentRow = null; _currentChunkStart = 0; _reader = new ChunkReader(source, encoding, config); _config = config; _rowCnt = 0; _rowPool = Row.CreatePool(); }
public void ReadFirstChunk() { ChunkReader reader = new ChunkReader(@"FileOut01.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("'")); reader.Close(); }
public void reads_the_tag() { const string tag = "<style id=\"roomName\" />[The Western Road, Stream Bank]\n<style id=\"\"/>"; var reader = new ChunkReader<RoomNameTag>("<style id=\"roomName\"", "<style id=\"\""); var result = reader.Read(Chunk.For(tag)); Assert.AreEqual(tag, result.Tags.Single().Text); Assert.AreEqual("[The Western Road, Stream Bank]\n", result.Tags.OfType<RoomNameTag>().Single().Name); }
public void dailog_data_ignores_other_tags() { const string compassTag = "<compass><dir value=\"e\"/><dir value=\"nw\"/></compass>"; var reader = new ChunkReader<Tag>("<dialogData", "</dialogData"); var result = reader.Read(Chunk.For(compassTag)); Assert.AreEqual(compassTag, result.Chunk.Text); }
public async void ShouldThrowWhenEndOfMessageMarkerNotPresentAsync(byte[] input) { var reader = new ChunkReader(new MemoryStream(input)); var targetStream = new MemoryStream(); var ex = await Record.ExceptionAsync(() => reader.ReadNextMessagesAsync(targetStream)); ex.Should().NotBeNull(); ex.Should().BeOfType <IOException>().Which.Message.Should().StartWith("Unexpected end of stream"); }
public void ShouldThrowWhenEndOfStreamIsDetected(byte[] input) { var reader = new ChunkReader(new MemoryStream(input)); var targetStream = new MemoryStream(); var ex = Record.Exception(() => reader.ReadNextMessages(targetStream)); ex.Should().NotBeNull(); ex.Should().BeOfType <IOException>().Which.Message.Should().StartWith("Unexpected end of stream"); }
public int Load() { _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig); _chunkWriter = new ChunkWriter(_chunkManager); _chunkReader = new ChunkReader(_chunkManager, _chunkWriter); _chunkManager.Load(ReadMessage); return(_chunkManager.GetAllChunks().Count); }
public void ReadBangSkippingNewLines() { ChunkReader reader = new ChunkReader(@"Transactions.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); reader.Close(); }
static private long[] ReadLengthArray(byte[] bytes, int startOffset, int dataDimension, out int readDataSize) { long[] lengthArray = new long[dataDimension]; readDataSize = dataDimension * Marshal.SizeOf(typeof(long)); for (int iDim = 0; iDim < dataDimension; ++iDim) { lengthArray[iDim] = ChunkReader.BigEndianBytesToInt64(bytes, startOffset + iDim * Marshal.SizeOf(typeof(long))); } return(lengthArray); }
public void ShouldReadMessageSpanningMultipleChunks(byte[] input, byte[] expectedMessageBuffers, int expectedCount) { var reader = new ChunkReader(new MemoryStream(input)); var targetStream = new MemoryStream(); var count = reader.ReadNextMessages(targetStream); var messageBuffers = targetStream.ToArray(); count.Should().Be(expectedCount); messageBuffers.Should().Equal(expectedMessageBuffers); }
public void CountChunks() { ChunkReader reader = new ChunkReader(@"Chunks.st"); int count = 0; ChunkReaderProcessor processor = new ChunkReaderProcessor((Machine machine, ICompiler compiler, string text) => { count++; }); processor.Process(reader, null, null); Assert.AreEqual(3, count); count = 0; processor.Process(reader, null, null); Assert.AreEqual(2, count); }
public async void ShouldResetInternalBufferPositionsWhenWritableBufferIsSmallerThanSetWatermarkAsync() { var input = GenerateMessageChunk(Constants.ChunkBufferSize - Constants.ChunkBufferResetPositionsWatermark); var logger = new Mock <ILogger>(); var reader = new ChunkReader(new MemoryStream(input), logger.Object); var count = await reader.ReadNextMessagesAsync(new MemoryStream()); count.Should().Be(1); logger.Verify(l => l.Trace(It.IsRegex(CompactingArgumentRegEx), It.IsAny <object[]>()), Times.Once); }
public void ReadBangSkippingNewLines() { ChunkReader reader = new ChunkReader(@"Transactions.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); reader.Close(); }
public void ReadDefineRectangle() { ChunkReader reader = new ChunkReader(@"DefineRectangle.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); reader.Close(); }
public Queue(string topic, int queueId) { Topic = topic; QueueId = queueId; _jsonSerializer = ObjectContainer.Resolve<IJsonSerializer>(); _chunkManager = new ChunkManager(string.Format("{0}-{1}", Topic, QueueId), BrokerController.Instance.Setting.QueueChunkConfig, Topic + @"\" + QueueId); _chunkWriter = new ChunkWriter(_chunkManager); _chunkReader = new ChunkReader(_chunkManager, _chunkWriter); _queueSettingFile = Path.Combine(_chunkManager.ChunkPath, QueueSettingFileName); _logger = ObjectContainer.Resolve<ILoggerFactory>().Create(this.GetType().FullName); }
public Queue(string topic, int queueId) { Topic = topic; QueueId = queueId; Key = new QueueKey(topic, queueId); _jsonSerializer = ObjectContainer.Resolve<IJsonSerializer>(); _chunkManager = new ChunkManager("QueueChunk-" + Key.ToString(), BrokerController.Instance.Setting.QueueChunkConfig, BrokerController.Instance.Setting.IsMessageStoreMemoryMode, Topic + @"\" + QueueId); _chunkWriter = new ChunkWriter(_chunkManager); _chunkReader = new ChunkReader(_chunkManager, _chunkWriter); _queueSettingFile = Path.Combine(_chunkManager.ChunkPath, QueueSettingFileName); _logger = ObjectContainer.Resolve<ILoggerFactory>().Create(this.GetType().FullName); }
public StreamChunkReader() { _reader = new ChunkReader<StreamTag>("<pushStream", "<popStream", checkEndTag: true, skipNewLineAfterTag: true); _reader.Append = (builder, result, tag) => { if(string.Equals(tag.Id, "assess")) { builder.Append(tag.Value); } result.AddTag(tag); return 0; }; }
public void ProcessFileOut01() { ChunkReader chunkReader = new ChunkReader(@"FileOut01.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); reader.Process(model); Assert.IsNotNull(model.GetClass("Object")); Assert.AreEqual(3, model.Elements.Count()); Assert.IsInstanceOfType(model.Elements.First(), typeof(ClassModel)); Assert.IsInstanceOfType(model.Elements.Skip(1).First(), typeof(MethodModel)); Assert.IsInstanceOfType(model.Elements.Skip(2).First(), typeof(MethodModel)); }
void Awake() { if (chunkHandler != null) { GameObject.Destroy(chunkHandler); } else { chunkHandler = this; } DontDestroyOnLoad(this); ChunkReader chunkReader = new ChunkReader(chunkTextFile); }
public PresetChunkReader() { _reader = new ChunkReader<PresetTag>("<preset", "</preset"); _reader.Append = (builder, result, tag) => { var skip = 0; if(tag.Id.Equals("roomdesc")) { builder.Append(tag.Value); skip = 2; } if(tag.Id.Equals("speech")) { builder.Append(tag.Value); } result.AddTag(tag); return skip; }; }
public PromptChunkReader() { _reader = new ChunkReader<PromptTag>("<prompt", "</prompt", skipNewLineAfterTag: false); _reader.Append = (builder, result, tag) => { var skip = 0; if(_count == 0 && !tag.Equals(_lastPrompt)) { builder.Append(tag.Prompt); } else { skip = 1; } _lastPrompt = tag; result.AddTag(tag); _count++; return skip; }; }
public OutputChunkReader() { _reader = new ChunkReader<Tag>("<output class=\"mono\"", "<output class=\"\"", true); _reader.Append = (builder, result, tag) => { return 0; }; _reader.AppendPartial = (builder, state, result) => { if(state.Text.Length > 0) { var newData = state.Text.ToString().Substring(state.DequedTextIndex, state.Text.Length - state.DequedTextIndex); state.DequedText.Append(newData); state.DequedTextIndex = state.Text.Length; if(!string.IsNullOrWhiteSpace(newData)){ if(!newData.StartsWith(Start_Tag)){ newData = Start_Tag + newData; } if(!newData.EndsWith(End_Tag)){ newData += End_Tag; } builder.Append(newData); } } }; }
public void CompileFileOut01() { ChunkReader chunkReader = new ChunkReader(@"FileOut01.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); reader.Process(model); this.compiler.Visit(model); this.writer.Close(); string output = this.writer.ToString(); // TODO more tests Assert.IsTrue(ContainsLine(output, "function Object()")); }
public void ReadLibraryBehavior() { ChunkReader reader = new ChunkReader(@"Behavior.st"); string chunk = reader.GetChunk(); Assert.IsNotNull(chunk); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsFalse(chunk.StartsWith("!")); chunk = reader.GetChunk(); Assert.IsNotNull(chunk); Assert.IsTrue(chunk.StartsWith("!")); reader.Close(); }
public void CompilePharoCoreRectangle() { ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st"); CodeReader coreReader = new CodeReader(chunkCoreReader); ChunkReader chunkReader = new ChunkReader(@"PharoCoreRectangle.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); coreReader.Process(model); reader.Process(model); this.compiler.Visit(model); this.writer.Close(); string output = this.writer.ToString(); // TODO more tests Assert.IsTrue(ContainsLine(output, "function Rectangle()")); Assert.IsTrue(ContainsLine(output, "RectangleClass.__super = ObjectClass;")); Assert.IsTrue(ContainsLine(output, "Rectangle.__super = Object;")); Assert.IsTrue(ContainsLine(output, "RectangleClass.prototype.__proto__ = ObjectClass.prototype;")); Assert.IsTrue(ContainsLine(output, "Rectangle.prototype.__proto__ = Object.prototype;")); Assert.IsTrue(ContainsLine(output, "Rectangle.prototype.$origin = null;")); Assert.IsTrue(ContainsLine(output, "Rectangle.prototype.$corner = null;")); }
public void SetUp() { reader = new ChunkReader<Tag>("<prompt", "</prompt"); }
public void CompileSqueakKernelObjectsForNodeJs() { ChunkReader chunkReader = new ChunkReader(@"SqueakKernelObjects.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); reader.Process(model); this.compiler.Visit(model); this.writer.Close(); string output = this.writer.ToString(); // TODO more tests Assert.IsTrue(ContainsLine(output, "function Object()")); Assert.IsTrue(ContainsLine(output, "function Boolean()")); Assert.IsTrue(ContainsLine(output, "exports.Object = Object;")); Assert.IsTrue(ContainsLine(output, "exports.Boolean = Boolean;")); // Class variables in Object Assert.IsTrue(ContainsLine(output, "ObjectClass.$DependentsFields = null;")); }
public void CompilePharoCoreRectangle() { ChunkReader chunkCoreReader = new ChunkReader(@"PharoCoreKernelObjects.st"); CodeReader coreReader = new CodeReader(chunkCoreReader); ChunkReader chunkReader = new ChunkReader(@"PharoCoreRectangle.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); coreReader.Process(model); reader.Process(model); foreach (var element in model.Elements) { Block block = new Block(); BytecodeCompiler compiler = new BytecodeCompiler(block); element.Visit(compiler); if (element is MethodModel && ((MethodModel)element).Body == null) continue; Assert.IsNotNull(block.ByteCodes); } }
public void CompileSqueakObjectForNodeJs() { ChunkReader chunkReader = new ChunkReader(@"SqueakObject.st"); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); reader.Process(model); this.compiler.Visit(model); this.writer.Close(); string output = this.writer.ToString(); // TODO more tests Assert.IsTrue(ContainsLine(output, "var base = require('./js/ajtalk-base.js');")); Assert.IsTrue(ContainsLine(output, "var send = base.send;")); Assert.IsTrue(ContainsLine(output, "var sendSuper = base.sendSuper;")); Assert.IsTrue(ContainsLine(output, "var primitives = require('./js/ajtalk-primitives.js');")); Assert.IsTrue(ContainsLine(output, "function Object()")); Assert.IsTrue(ContainsLine(output, "exports.Object = Object;")); }
public int Load() { _chunkManager = new ChunkManager(this.GetType().Name, BrokerController.Instance.Setting.MessageChunkConfig); _chunkWriter = new ChunkWriter(_chunkManager); _chunkReader = new ChunkReader(_chunkManager, _chunkWriter); _chunkManager.Load(ReadMessage); return _chunkManager.GetAllChunks().Count; }
internal static void CompileFile(string filename) { ChunkReader chunkReader = new ChunkReader(filename); CodeReader reader = new CodeReader(chunkReader); CodeModel model = new CodeModel(); reader.Process(model); foreach (var element in model.Elements) { Block block = new Block(); BytecodeCompiler compiler = new BytecodeCompiler(block); element.Visit(compiler); if (element is MethodModel && ((MethodModel)element).Body == null) continue; Assert.IsNotNull(block.ByteCodes); } }