public void CountedString()
        {
            CountedString countedString = "Hello";

            AssertCountedString(countedString);

            MyMessageFragment messageFragment = "Hello";

            AssertCountedString(messageFragment);
        }
        private static void AssertCountedString(CountedString countedString)
        {
            var eventQueue = new Queue <string>();

            countedString.OnIncremented += (str) => eventQueue.Enqueue($"'{str.GetWithoutCounting()}' used {str.UsageCount} time(s)");

            Assert.AreEqual(0, countedString.UsageCount);
            Assert.AreEqual("Hello World!", countedString + " World!");
            Assert.AreEqual(1, countedString.UsageCount);
            Assert.AreEqual("'Hello' used 1 time(s)", eventQueue.Dequeue());
            Assert.AreEqual("Hello World!", countedString + " World!");
            Assert.AreEqual(2, countedString.UsageCount);
            Assert.AreEqual("'Hello' used 2 time(s)", eventQueue.Dequeue());
            Assert.AreEqual("Hello World!", countedString + " World!");
            Assert.AreEqual(3, countedString.UsageCount);
            Assert.AreEqual("'Hello' used 3 time(s)", eventQueue.Dequeue());
            Assert.AreEqual("Hello World!", countedString + " World!");
            Assert.AreEqual(4, countedString.UsageCount);
            Assert.AreEqual("'Hello' used 4 time(s)", eventQueue.Dequeue());
            Assert.AreEqual("Hello World!", countedString.GetWithoutCounting() + " World!");
            Assert.AreEqual(4, countedString.UsageCount);
            Assert.AreEqual(0, eventQueue.Count);
        }
Esempio n. 3
0
 public CountedStringLiteralWord(CountedString countedString, Environment env)
     : base("c\"", countedString.CounterAddress,
            e => e.DataStack.Push(countedString.CounterAddress))
 {
     Value = env.Memory.FetchCountedString(countedString);
 }
Esempio n. 4
0
 public CharString ToCharString(CountedString countedString)
 {
     return(new CharString(1 + countedString.CounterAddress, FetchByte(countedString.CounterAddress)));
 }
Esempio n. 5
0
 public string FetchCountedString(CountedString countedString)
 {
     return(FetchCharString(ToCharString(countedString)));
 }