Exemplo n.º 1
0
 private async Task WriteOutAsync(HashedStream inStr, HashedStream outStr)
 {
     Random rand = new Random();
     using (inStr)
     using (outStr)
     {
         Assert.True(inStr.CanRead);
         Assert.True(outStr.CanWrite);
         if (inStr.CanTimeout)
             Assert.NotEqual(0, inStr.ReadTimeout);
         if (outStr.CanTimeout)
             Assert.NotEqual(0, outStr.WriteTimeout);
         for (;;)
         {
             var buffer = new byte[rand.Next(1, 20000)];
             int read = await inStr.ReadAsync(buffer, 0, buffer.Length);
             if (read == 0)
                 return;
             await outStr.WriteAsync(buffer, 0, read);
             int by = inStr.ReadByte();
             if (by == -1)
                 return;
             outStr.WriteByte((byte)by);
         }
     }
 }
Exemplo n.º 2
0
 public async Task DefaultConstAsync()
 {
     var fs = GetFileStream();
     var ms = Stream.Null;
     var hashIn = new HashedStream(fs);
     var hashOut = new HashedStream(ms);
     await WriteOutAsync(hashIn, hashOut);
     Assert.False(hashIn.WasMoved);
     Assert.True(hashIn.ReadHash128 == hashOut.WriteHash128);
     Assert.True(hashIn.ReadHash32 == hashOut.WriteHash32);
     Assert.True(hashIn.ReadHash64 == hashOut.WriteHash64);
 }
Exemplo n.º 3
0
 public void HashExternal64()
 {
     long hash;
     using(var hs = new HashedStream(GetFileStream()))
     {
         hash = SpookyHasher.SpookyHash64(hs);
         Assert.Equal(hash, hs.ReadHash64);
     }
     using(var fs = GetFileStream())
         Assert.Equal((ulong)hash, SpookyHasher.SpookyHash64(fs, 0xDEADBEEFDEADBEEF));
     using(var fs = GetFileStream())
         Assert.Equal(hash, unchecked(SpookyHasher.SpookyHash64(fs, (long)0xDEADBEEFDEADBEEF)));
 }
Exemplo n.º 4
0
 public async Task HashExternal64Async()
 {
     long hash;
     using (var hs = new HashedStream(GetFileStream()))
     {
         hash = await SpookyHasher.SpookyHash64Async(hs);
         Assert.Equal(hash, hs.ReadHash64);
     }
     using (var fs = GetFileStream())
         Assert.Equal((ulong)hash, await SpookyHasher.SpookyHash64Async(fs, 0xDEADBEEFDEADBEEF));
     using (var fs = GetFileStream())
         Assert.Equal(hash, unchecked(await SpookyHasher.SpookyHash64Async(fs, (long)0xDEADBEEFDEADBEEF)));
 }
Exemplo n.º 5
0
 public void HashExternal128()
 {
     HashCode128 hash;
     using(var hs = new HashedStream(GetFileStream()))
     {
         hash = SpookyHasher.SpookyHash128(hs);
         Assert.Equal(hash, hs.ReadHash128);
     }
     using(var fs = GetFileStream())
         Assert.Equal(hash, SpookyHasher.SpookyHash128(fs, 0xDEADBEEFDEADBEEF, 0xDEADBEEFDEADBEEF));
     using(var fs = GetFileStream())
         Assert.Equal(
             hash,
             unchecked(SpookyHasher.SpookyHash128(
                 fs,
                 (long)0xDEADBEEFDEADBEEF,
                 (long)0xDEADBEEFDEADBEEF)));
 }
Exemplo n.º 6
0
 public async Task HashExternal128Async()
 {
     HashCode128 hash;
     using (var hs = new HashedStream(GetFileStream()))
     {
         hash = await SpookyHasher.SpookyHash128Async(hs);
         Assert.Equal(hash, hs.ReadHash128);
     }
     using (var fs = GetFileStream())
         Assert.Equal(hash, await SpookyHasher.SpookyHash128Async(fs, 0xDEADBEEFDEADBEEF, 0xDEADBEEFDEADBEEF));
     using (var fs = GetFileStream())
         Assert.Equal(
             hash,
             await unchecked(SpookyHasher.SpookyHash128Async(
                 fs,
                 (long)0xDEADBEEFDEADBEEF,
                 (long)0xDEADBEEFDEADBEEF)));
 }
Exemplo n.º 7
0
 public void TimeoutWrite()
 {
     WebRequest wr = WebRequest.Create("http://www.google.com/");
     wr.Method = "POST";
     var stm = wr.GetRequestStream();
     using(var hs = new HashedStream(stm))
     {
         Assert.Equal(stm.WriteTimeout, hs.WriteTimeout);
         hs.WriteTimeout = stm.WriteTimeout;
     }
 }
Exemplo n.º 8
0
 public void TimeoutRead()
 {
     WebRequest wr = WebRequest.Create("http://www.google.com/");
     using(var rsp = wr.GetResponse())
     {
         var stm = rsp.GetResponseStream();
         using(var hs = new HashedStream(stm))
         {
             Assert.Equal(stm.ReadTimeout, hs.ReadTimeout);
             hs.ReadTimeout = stm.ReadTimeout;
         }
     }
 }
Exemplo n.º 9
0
 public async Task MoveStreamAsync()
 {
     using (var hashOut = new HashedStream(new MemoryStream()))
     using (var tw = new StreamWriter(hashOut))
     {
         string asciiOnlyString = "Something or other";
         await tw.WriteAsync(asciiOnlyString);
         await tw.FlushAsync();
         Assert.Equal(asciiOnlyString.Length, hashOut.Length);
         Assert.Equal(asciiOnlyString.Length, hashOut.Position);
         Assert.True(hashOut.CanSeek);
         hashOut.Seek(0, SeekOrigin.Begin);
         Assert.True(hashOut.WasMoved);
     }
     using (var hashOut = new HashedStream(new MemoryStream()))
     using (var tw = new StreamWriter(hashOut))
     {
         await tw.WriteAsync("Something or other");
         hashOut.SetLength(0);
         Assert.True(hashOut.WasMoved);
     }
     using (var hashOut = new HashedStream(new MemoryStream()))
     using (var tw = new StreamWriter(hashOut))
     {
         await tw.WriteAsync("Something or other");
         Assert.True(hashOut.CanSeek);
         hashOut.Position = 0;
         Assert.True(hashOut.WasMoved);
     }
 }
Exemplo n.º 10
0
 public async Task LongDiffConstAsync()
 {
     var fs = GetFileStream();
     var ms = Stream.Null;
     var hashIn = new HashedStream(fs, 42L, 53L, 23L, 34L);
     var hashOut = new HashedStream(ms, 42L, 53L, 23L, 34L);
     await WriteOutAsync(hashIn, hashOut);
     Assert.False(hashIn.WasMoved);
     Assert.False(hashIn.ReadHash128 == hashOut.WriteHash128);
     Assert.False(hashIn.ReadHash32 == hashOut.WriteHash32);
     Assert.False(hashIn.ReadHash64 == hashOut.WriteHash64);
 }
Exemplo n.º 11
0
 public void LongConst()
 {
     var fs = GetFileStream();
     var ms = Stream.Null;
     var hashIn = new HashedStream(fs, 42L, 53L);
     var hashOut = new HashedStream(ms, 42L, 53L);
     WriteOut(hashIn, hashOut);
     Assert.False(hashIn.WasMoved);
     Assert.True(hashIn.ReadHash128 == hashOut.WriteHash128);
     Assert.True(hashIn.ReadHash32 == hashOut.WriteHash32);
     Assert.True(hashIn.ReadHash64 == hashOut.WriteHash64);
 }