|
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.
|