You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2006/03/04 07:23:03 UTC
svn commit: r383051 - in /incubator/activemq/trunk/openwire-dotnet:
src/OpenWire.Client/Core/BooleanStream.cs tests/OpenWire.Client/Core/
tests/OpenWire.Client/Core/BooleanStreamTest.cs tests/tests.csproj
Author: chirino
Date: Fri Mar 3 22:23:01 2006
New Revision: 383051
URL: http://svn.apache.org/viewcvs?rev=383051&view=rev
Log:
back ported the BooleanStream class and it's associated test case
Added:
incubator/activemq/trunk/openwire-dotnet/tests/OpenWire.Client/Core/
incubator/activemq/trunk/openwire-dotnet/tests/OpenWire.Client/Core/BooleanStreamTest.cs
Modified:
incubator/activemq/trunk/openwire-dotnet/src/OpenWire.Client/Core/BooleanStream.cs
incubator/activemq/trunk/openwire-dotnet/tests/tests.csproj
Modified: incubator/activemq/trunk/openwire-dotnet/src/OpenWire.Client/Core/BooleanStream.cs
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/openwire-dotnet/src/OpenWire.Client/Core/BooleanStream.cs?rev=383051&r1=383050&r2=383051&view=diff
==============================================================================
--- incubator/activemq/trunk/openwire-dotnet/src/OpenWire.Client/Core/BooleanStream.cs (original)
+++ incubator/activemq/trunk/openwire-dotnet/src/OpenWire.Client/Core/BooleanStream.cs Fri Mar 3 22:23:01 2006
@@ -1,135 +1,123 @@
-/*
- * Copyright 2006 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-using System;
-using System.IO;
-
-using OpenWire.Client.Commands;
-using OpenWire.Client.Core;
-using OpenWire.Client.IO;
-
-namespace OpenWire.Client.Core
-{
- /// <summary>
- /// Represents a stream of boolean flags
- /// </summary>
- public class BooleanStream
- {
- byte[] data = new byte[48];
- short arrayLimit;
- short arrayPos;
- byte bytePos;
-
- public bool ReadBoolean()
- {
- byte b = data[arrayPos];
- bool rc = ((b >> bytePos) & 0x01) != 0;
- bytePos++;
- if (bytePos >= 8)
- {
- bytePos = 0;
- arrayPos++;
- }
- return rc;
- }
-
- public void WriteBoolean(bool value)
- {
- if (bytePos == 0)
- {
- arrayLimit++;
- if (arrayLimit >= data.Length)
- {
- // re-grow the array.
- byte[] d = new byte[data.Length * 2];
- for (int i = 0; i < data.Length; i++)
- {
- d[i] = data[i];
- }
- data = d;
- }
- }
- if (value)
- {
- data[arrayPos] |= (byte) (0x01 << bytePos);
- }
- bytePos++;
- if (bytePos >= 8)
- {
- bytePos = 0;
- arrayPos++;
- }
- }
-
- public void Marshal(BinaryWriter dataOut)
- {
- if (arrayLimit < 64)
- {
- dataOut.Write((byte) arrayLimit);
- }
- else if (arrayLimit < 256)
- { // max value of unsigned byte
- dataOut.Write((byte) 0xC0);
- dataOut.Write((byte) arrayLimit);
- }
- else
- {
- dataOut.Write((byte) 0xE0);
- BaseDataStreamMarshaller.WriteShort(arrayLimit, dataOut);
- }
-
- dataOut.Write(data, 0, arrayLimit);
- Clear();
- }
-
- public void Unmarshal(BinaryReader dataIn)
- {
- arrayLimit = BaseDataStreamMarshaller.ReadByte(dataIn);
- if ((arrayLimit & 0xE0) != 0)
- {
- arrayLimit = BaseDataStreamMarshaller.ReadShort(dataIn);
- }
- else if ((arrayLimit & 0xC0) != 0)
- {
- arrayLimit = (short) (BaseDataStreamMarshaller.ReadByte(dataIn) & 0xFF);
- }
- if (data.Length < arrayLimit)
- {
- data = new byte[arrayLimit];
- }
- dataIn.Read(data, 0, arrayLimit);
- Clear();
- }
-
- public void Clear()
- {
- arrayPos = 0;
- bytePos = 0;
- }
-
- public int MarshalledSize()
- {
- if (arrayLimit < 64)
- {
- return 1 + arrayLimit;
- }
- else
- {
- return 2 + arrayLimit;
- }
- }
- }
-}
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using System.IO;
+
+using OpenWire.Client.Commands;
+using OpenWire.Client.Core;
+using OpenWire.Client.IO;
+
+namespace OpenWire.Client.Core
+{
+ /// <summary>
+ /// Represents a stream of boolean flags
+ /// </summary>
+ public class BooleanStream
+ {
+ byte[] data = new byte[48];
+ short arrayLimit;
+ short arrayPos;
+ byte bytePos;
+
+ public bool ReadBoolean()
+ {
+ byte b = data[arrayPos];
+ bool rc = ((b >> bytePos) & 0x01) != 0;
+ bytePos++;
+ if (bytePos >= 8)
+ {
+ bytePos = 0;
+ arrayPos++;
+ }
+ return rc;
+ }
+
+ public void WriteBoolean(bool value)
+ {
+ if (bytePos == 0)
+ {
+ arrayLimit++;
+ if (arrayLimit >= data.Length)
+ {
+ // re-grow the array.
+ byte[] d = new byte[data.Length * 2];
+ Array.Copy(data, d, data.Length);
+ data = d;
+ }
+ }
+ if (value)
+ {
+ data[arrayPos] |= (byte) (0x01 << bytePos);
+ }
+ bytePos++;
+ if (bytePos >= 8)
+ {
+ bytePos = 0;
+ arrayPos++;
+ }
+ }
+
+ public void Marshal(BinaryWriter dataOut)
+ {
+ if( arrayLimit < 64 ) {
+ dataOut.Write((byte)arrayLimit);
+ } else if( arrayLimit < 256 ) { // max value of unsigned byte
+ dataOut.Write((byte)0xC0);
+ dataOut.Write((byte)arrayLimit);
+ } else {
+ dataOut.Write((byte)0x80);
+ BaseDataStreamMarshaller.WriteShort(arrayLimit, dataOut);
+ }
+ dataOut.Write(data, 0, arrayLimit);
+ Clear();
+ }
+
+ public void Unmarshal(BinaryReader dataIn)
+ {
+ arrayLimit = (short)(BaseDataStreamMarshaller.ReadByte(dataIn) & 0xFF);
+ if ( arrayLimit == 0xC0 ) {
+ arrayLimit = (short)(BaseDataStreamMarshaller.ReadByte(dataIn) & 0xFF);
+ } else if( arrayLimit == 0x80 ) {
+ arrayLimit = BaseDataStreamMarshaller.ReadShort(dataIn);
+ }
+ if( data.Length < arrayLimit ) {
+ data = new byte[arrayLimit];
+ }
+
+ dataIn.Read(data, 0, arrayLimit);
+ Clear();
+ }
+
+ public void Clear()
+ {
+ arrayPos = 0;
+ bytePos = 0;
+ }
+
+ public int MarshalledSize()
+ {
+ if( arrayLimit < 64 ) {
+ return 1+arrayLimit;
+ } else if (arrayLimit < 256) {
+ return 2+arrayLimit;
+ } else {
+ return 3+arrayLimit;
+ }
+
+ }
+ }
+}
Added: incubator/activemq/trunk/openwire-dotnet/tests/OpenWire.Client/Core/BooleanStreamTest.cs
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/openwire-dotnet/tests/OpenWire.Client/Core/BooleanStreamTest.cs?rev=383051&view=auto
==============================================================================
--- incubator/activemq/trunk/openwire-dotnet/tests/OpenWire.Client/Core/BooleanStreamTest.cs (added)
+++ incubator/activemq/trunk/openwire-dotnet/tests/OpenWire.Client/Core/BooleanStreamTest.cs Fri Mar 3 22:23:01 2006
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using System.IO;
+
+using NUnit.Framework;
+
+using OpenWire.Client;
+using OpenWire.Client.Core;
+
+namespace OpenWire.Client.Core
+{
+ [TestFixture]
+ public class BooleanStreamTest : TestSupport
+ {
+ protected OpenWireFormat openWireformat;
+ protected int endOfStreamMarker = 0x12345678;
+ int numberOfBytes = 8 * 200;
+
+ public delegate bool GetBooleanValueDelegate(int index, int count);
+
+ [Test]
+ public void TestBooleanMarshallingUsingAllTrue()
+ {
+ TestBooleanStream(numberOfBytes, new GetBooleanValueDelegate(GetBooleanValueAllTrue));
+ }
+ public bool GetBooleanValueAllTrue(int index, int count)
+ {
+ return true;
+ }
+
+ [Test]
+ public void TestBooleanMarshallingUsingAllFalse()
+ {
+ TestBooleanStream(numberOfBytes, new GetBooleanValueDelegate(GetBooleanValueAllFalse));
+ }
+ public bool GetBooleanValueAllFalse(int index, int count)
+ {
+ return false;
+ }
+
+ [Test]
+ public void TestBooleanMarshallingUsingAlternateTrueFalse()
+ {
+ TestBooleanStream(numberOfBytes, new GetBooleanValueDelegate(GetBooleanValueAlternateTrueFalse));
+ }
+ public bool GetBooleanValueAlternateTrueFalse(int index, int count)
+ {
+ return (index & 1) == 0;
+ }
+
+ [Test]
+ public void TestBooleanMarshallingUsingAlternateFalseTrue()
+ {
+ TestBooleanStream(numberOfBytes, new GetBooleanValueDelegate(GetBooleanValueAlternateFalseTrue));
+ }
+ public bool GetBooleanValueAlternateFalseTrue(int index, int count)
+ {
+ return (index & 1) != 0;
+ }
+
+ protected void TestBooleanStream(int numberOfBytes, GetBooleanValueDelegate valueDelegate)
+ {
+ for (int i = 0; i < numberOfBytes; i++)
+ {
+ AssertMarshalBooleans(i, valueDelegate);
+ }
+ }
+
+ protected void AssertMarshalBooleans(int count, GetBooleanValueDelegate valueDelegate)
+ {
+ BooleanStream bs = new BooleanStream();
+ for (int i = 0; i < count; i++)
+ {
+ bs.WriteBoolean(valueDelegate(i, count));
+ }
+ MemoryStream buffer = new MemoryStream();
+ BinaryWriter ds = new BinaryWriter(buffer);
+ bs.Marshal(ds);
+ BaseDataStreamMarshaller.WriteInt(endOfStreamMarker, ds);
+
+ // now lets read from the stream
+
+ MemoryStream ins = new MemoryStream(buffer.ToArray());
+ BinaryReader dis = new BinaryReader(ins);
+ bs = new BooleanStream();
+ bs.Unmarshal(dis);
+
+ for (int i = 0; i < count; i++)
+ {
+ bool expected = valueDelegate(i, count);
+
+ try
+ {
+ bool actual = bs.ReadBoolean();
+ Assert.AreEqual(expected, actual);
+ }
+ catch (Exception e)
+ {
+ Assert.Fail("Failed to parse bool: " + i + " out of: " + count + " due to: " + e);
+ }
+ }
+ int marker = BaseDataStreamMarshaller.ReadInt(dis);
+ Assert.AreEqual(endOfStreamMarker, marker, "did not match: "+endOfStreamMarker+" and "+marker);
+
+ // lets try read and we should get an exception
+ try
+ {
+ dis.ReadByte();
+ Assert.Fail("Should have reached the end of the stream");
+ }
+ catch (IOException e)
+ {
+ }
+ }
+
+ [SetUp]
+ protected void SetUp()
+ {
+ openWireformat = createOpenWireFormat();
+ }
+
+ protected OpenWireFormat createOpenWireFormat()
+ {
+ OpenWireFormat wf = new OpenWireFormat();
+// wf.setCacheEnabled(true);
+// wf.setStackTraceEnabled(false);
+// wf.setVersion(1);
+ return wf;
+ }
+ }
+}
+
Modified: incubator/activemq/trunk/openwire-dotnet/tests/tests.csproj
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/openwire-dotnet/tests/tests.csproj?rev=383051&r1=383050&r2=383051&view=diff
==============================================================================
--- incubator/activemq/trunk/openwire-dotnet/tests/tests.csproj (original)
+++ incubator/activemq/trunk/openwire-dotnet/tests/tests.csproj Fri Mar 3 22:23:01 2006
@@ -1,57 +1,58 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>8.0.30703</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{B409B247-A311-42A9-B68D-76054D63DD7D}</ProjectGuid>
- <OutputType>Library</OutputType>
- <RootNamespace>tests</RootNamespace>
- <AssemblyName>tests</AssemblyName>
- <WarningLevel>4</WarningLevel>
- <StartupObject/>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugSymbols>false</DebugSymbols>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="nunit.core"/>
- <Reference Include="nunit.framework"/>
- <Reference Include="System"/>
- <Reference Include="System.Data"/>
- <Reference Include="System.Xml"/>
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets"/>
- <ItemGroup>
- <Compile Include="OpenWire.Client\AsyncConsumeTest.cs"/>
- <Compile Include="OpenWire.Client\BadConsumeTest.cs"/>
- <Compile Include="OpenWire.Client\BytesMessageTest.cs"/>
- <Compile Include="OpenWire.Client\ClientTest.cs"/>
- <Compile Include="OpenWire.Client\CommandTest.cs"/>
- <Compile Include="OpenWire.Client\ConsumerTest.cs"/>
- <Compile Include="OpenWire.Client\EndianTest.cs"/>
- <Compile Include="OpenWire.Client\JMSPropertyTest.cs"/>
- <Compile Include="OpenWire.Client\MapMessageTest.cs"/>
- <Compile Include="OpenWire.Client\TestMain.cs"/>
- <Compile Include="OpenWire.Client\TestSupport.cs"/>
- <Compile Include="OpenWire.Client\TransactionTest.cs"/>
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="../src/src.csproj">
- <Name>src</Name>
- <Project>{F7BA9EF7-ADF7-40EF-9A9E-206649DBB10C}</Project>
- </ProjectReference>
- </ItemGroup>
-</Project>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{B409B247-A311-42A9-B68D-76054D63DD7D}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <RootNamespace>tests</RootNamespace>
+ <AssemblyName>tests</AssemblyName>
+ <WarningLevel>4</WarningLevel>
+ <StartupObject/>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugSymbols>false</DebugSymbols>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="nunit.core"/>
+ <Reference Include="nunit.framework"/>
+ <Reference Include="System"/>
+ <Reference Include="System.Data"/>
+ <Reference Include="System.Xml"/>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets"/>
+ <ItemGroup>
+ <Compile Include="OpenWire.Client\AsyncConsumeTest.cs"/>
+ <Compile Include="OpenWire.Client\BadConsumeTest.cs"/>
+ <Compile Include="OpenWire.Client\BytesMessageTest.cs"/>
+ <Compile Include="OpenWire.Client\ClientTest.cs"/>
+ <Compile Include="OpenWire.Client\CommandTest.cs"/>
+ <Compile Include="OpenWire.Client\ConsumerTest.cs"/>
+ <Compile Include="OpenWire.Client\Core\BooleanStreamTest.cs"/>
+ <Compile Include="OpenWire.Client\EndianTest.cs"/>
+ <Compile Include="OpenWire.Client\JMSPropertyTest.cs"/>
+ <Compile Include="OpenWire.Client\MapMessageTest.cs"/>
+ <Compile Include="OpenWire.Client\TestMain.cs"/>
+ <Compile Include="OpenWire.Client\TestSupport.cs"/>
+ <Compile Include="OpenWire.Client\TransactionTest.cs"/>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="../src/src.csproj">
+ <Name>src</Name>
+ <Project>{F7BA9EF7-ADF7-40EF-9A9E-206649DBB10C}</Project>
+ </ProjectReference>
+ </ItemGroup>
+</Project>