From: <br...@us...> - 2009-10-07 09:48:08
|
Revision: 567 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=567&view=rev Author: brus07 Date: 2009-10-07 09:47:54 +0000 (Wed, 07 Oct 2009) Log Message: ----------- Added SubmitList class to project. Added simple UnitTests for this class. Modified Paths: -------------- nera/projects/nera.tester.data/trunk/Component Tests.csproj nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/TestsHelper.cs Added Paths: ----------- nera/projects/nera.tester.data/trunk/src/csharp/main/Nera/Tester/Data/SubmitList.cs nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/SubmitListUnitTests.cs nera/projects/nera.tester.data/trunk/test_files/data.xsd nera/projects/nera.tester.data/trunk/test_files/submitList/ nera/projects/nera.tester.data/trunk/test_files/submitList/2empty.xml Modified: nera/projects/nera.tester.data/trunk/Component Tests.csproj =================================================================== --- nera/projects/nera.tester.data/trunk/Component Tests.csproj 2009-10-07 08:56:45 UTC (rev 566) +++ nera/projects/nera.tester.data/trunk/Component Tests.csproj 2009-10-07 09:47:54 UTC (rev 567) @@ -15,5 +15,11 @@ </PropertyGroup> <Import Project="Reference.targets" /> + <ItemGroup> + <XSDFile Include="$(TestFilesDir)\data.xsd" /> + </ItemGroup> + <Target Name="TestSetup" DependsOnTargets="Build"> + <Copy SourceFiles="@(XSDFile)" DestinationFiles="@(XSDFile->'$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')" /> + </Target> </Project> \ No newline at end of file Copied: nera/projects/nera.tester.data/trunk/src/csharp/main/Nera/Tester/Data/SubmitList.cs (from rev 566, ACMServer/trunk/ACMServer/Library/Data/SubmitList.cs) =================================================================== --- nera/projects/nera.tester.data/trunk/src/csharp/main/Nera/Tester/Data/SubmitList.cs (rev 0) +++ nera/projects/nera.tester.data/trunk/src/csharp/main/Nera/Tester/Data/SubmitList.cs 2009-10-07 09:47:54 UTC (rev 567) @@ -0,0 +1,77 @@ +using System; +using System.Xml.Serialization; +using System.Collections; +using AcmContester.AcmLibraryExtention.XML; + +namespace Nera.Tester.Data +{ + [XmlRoot("submitList")] + public class SubmitList + { + readonly ArrayList listSubmits; + readonly ArrayList listSubmitsIoi; + + public SubmitList() + { + listSubmits = new ArrayList(); + listSubmitsIoi = new ArrayList(); + } + + public static SubmitList CreateFromXml(string message) + { + return XmlHelper.GetObject<SubmitList>(message, "submitList", "data.xsd"); + } + public override string ToString() + { + string result = XmlSerializer<SubmitList>.Serialization(this); + return result; + } + + [XmlElement("submit", typeof(Submit))] + public Submit[] SubmitItems + { + get + { + ArrayList list = new ArrayList(); + foreach (object x in listSubmits) + if (x is Submit) + list.Add(x); + + Submit[] submits = new Submit[list.Count]; + listSubmits.CopyTo(submits); + return submits; + } + set + { + if (value == null) return; + Submit[] submits = value; + listSubmits.Clear(); + foreach (Submit item in submits) + listSubmits.Add(item); + } + } + [XmlElement("submitIoi", typeof(SubmitIoi))] + public SubmitIoi[] SubmitIoiItems + { + get + { + ArrayList list = new ArrayList(); + foreach (object x in listSubmitsIoi) + if (x is SubmitIoi) + list.Add(x); + + SubmitIoi[] submits = new SubmitIoi[list.Count]; + listSubmitsIoi.CopyTo(submits); + return submits; + } + set + { + if (value == null) return; + SubmitIoi[] submits = value; + listSubmitsIoi.Clear(); + foreach (SubmitIoi item in submits) + listSubmitsIoi.Add(item); + } + } + } +} Added: nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/SubmitListUnitTests.cs =================================================================== --- nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/SubmitListUnitTests.cs (rev 0) +++ nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/SubmitListUnitTests.cs 2009-10-07 09:47:54 UTC (rev 567) @@ -0,0 +1,31 @@ +using NUnit.Framework; +using System; + +namespace Nera.Tester.Data.Test +{ + [TestFixture] + public class SubmitListUnitTests + { + [Test] + public void TestGetHashCode() + { + SubmitList list = new SubmitList(); + Submit[] submits = new Submit[2]; + submits[0] = new Submit(); + submits[0].sourceCode = ""; + submits[1] = new Submit(); + submits[1].sourceCode = ""; + list.SubmitItems = submits; + string s = list.ToString(); + Assert.AreEqual(list.SubmitItems.Length, 2, "The number of elements are bad"); + } + + [Test] + public void TestToStringEmpty() + { + string submitList2EmptyXML = ReaderHelper.ReadTextFromFile(TestsHelper.SubmitList2EmptyXMLFile); + SubmitList list = SubmitList.CreateFromXml(submitList2EmptyXML); + Assert.AreEqual(list.SubmitItems.Length, 2, "The number of elements are bad"); + } + } +} Modified: nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/TestsHelper.cs =================================================================== --- nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/TestsHelper.cs 2009-10-07 08:56:45 UTC (rev 566) +++ nera/projects/nera.tester.data/trunk/src/csharp/tests/Nera/Tester/Data/TestsHelper.cs 2009-10-07 09:47:54 UTC (rev 567) @@ -6,5 +6,7 @@ class TestsHelper { internal const string SubmitEmptyXMLFile = "../../test_files/submit/empty.xml"; + + internal const string SubmitList2EmptyXMLFile = "../../test_files/submitList/2empty.xml"; } } Copied: nera/projects/nera.tester.data/trunk/test_files/data.xsd (from rev 566, nera/projects/nera.tester.gui.sample/trunk/test_files/data.xsd) =================================================================== --- nera/projects/nera.tester.data/trunk/test_files/data.xsd (rev 0) +++ nera/projects/nera.tester.data/trunk/test_files/data.xsd 2009-10-07 09:47:54 UTC (rev 567) @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<xs:schema id="XMLSchema1" elementFormDefault="qualified" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <xs:complexType name="submitType"> + <xs:sequence maxOccurs="1"> + <!-- потрібно щоб ці записи могли слідувати у довільному порядку --> + <xs:element name="id" type="xs:positiveInteger" /> + <xs:element name="problem" type="xs:positiveInteger" /> + <xs:element name="sourceCode" type="xs:string" /> + <xs:element name="language"> + <!-- обмеження для ID мови програмування --> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:maxInclusive value="100" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="submitIOIType"> + <xs:sequence> + <xs:element name="submit" type="submitType" /> + <xs:element name="name" type="xs:string" /> + <xs:element name="form" type="xs:positiveInteger" /> + <xs:element name="school" type="xs:string" minOccurs="0" /> + </xs:sequence> + </xs:complexType> + <xs:element name="submitList"> + <xs:complexType> + <xs:sequence> + <xs:sequence> + <xs:element name="submit" type="submitType" maxOccurs="unbounded" minOccurs="0" /> + </xs:sequence> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:complexType name="resultType"> + <xs:sequence> + <xs:element name="res" type="xs:string" /> + <xs:element name="result" type="xs:int" /> + <xs:element name="usedTime" type="xs:double" /> + <xs:element name="usedMemory" type="xs:double" /> + <xs:element name="compOutput" type="xs:string" /> + <xs:element name="submit" type="submitType" /> + </xs:sequence> + </xs:complexType> + <xs:complexType name="resultIOIType"> + <xs:sequence> + <xs:element name="res" type="xs:string" /> + <xs:element name="result" type="xs:int" /> + <xs:element name="usedTime" type="xs:double" /> + <xs:element name="usedMemory" type="xs:double" /> + <xs:element name="compOutput" type="xs:string" /> + <xs:element name="testResults" type="testResultList" minOccurs="0" /> + <xs:element name="submitioi" type="submitIOIType" /> + </xs:sequence> + </xs:complexType> + <xs:complexType name="testResultList"> + <xs:sequence> + <xs:sequence> + <xs:element name="TestResIoi" type="testResultIoiType" maxOccurs="unbounded" minOccurs="0" /> + </xs:sequence> + </xs:sequence> + </xs:complexType> + <xs:complexType name="testResultIoiType"> + <xs:sequence> + <!-- обмеження для ID: не має бути відємним --> + <xs:element name="id" type="xs:int" /> + <xs:element name="res" type="xs:string" /> + <xs:element name="usedTime" type="xs:double" /> + <xs:element name="usedMemory" type="xs:double" /> + <xs:element name="input" type="xs:string" /> + <xs:element name="output" type="xs:string" /> + <xs:element name="contestantOutput" type="xs:string" /> + <xs:element name="point" type="xs:int" /> + </xs:sequence> + </xs:complexType> + <xs:element name="result" type="resultType"> + </xs:element> + <xs:element name="submit" type="submitType"> + </xs:element> + <xs:element name="submitioi" type="submitIOIType"> + </xs:element> + <xs:element name="resultioi" type="resultIOIType"> + </xs:element> +</xs:schema> \ No newline at end of file Added: nera/projects/nera.tester.data/trunk/test_files/submitList/2empty.xml =================================================================== --- nera/projects/nera.tester.data/trunk/test_files/submitList/2empty.xml (rev 0) +++ nera/projects/nera.tester.data/trunk/test_files/submitList/2empty.xml 2009-10-07 09:47:54 UTC (rev 567) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-16"?> +<submitList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <submit> + <id>1</id> + <problem>1</problem> + <sourceCode /> + <language>0</language> + </submit> + <submit> + <id>2</id> + <problem>1</problem> + <sourceCode /> + <language>0</language> + </submit> +</submitList> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |