You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2008/05/27 00:21:57 UTC

svn commit: r660326 [14/17] - in /harmony/enhanced/microemulator: ./ microemu-android/ microemu-android/src/ microemu-android/src/org/ microemu-android/src/org/microemu/ microemu-android/src/org/microemu/android/ microemu-android/src/org/microemu/andro...

Added: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/device.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/device.xml?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/device.xml (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/device.xml Mon May 26 15:20:19 2008
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<device name="Default device"
+		xmlns="http://www.microemu.org/2.0.2/"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://www.microemu.org/2.0.2/ http://www.microemu.org/2.0.2/device.xsd">
+    <system-properties>
+        <system-property name="microedition.platform" value="MicroEmulator-2.0" />
+    </system-properties>
+	<img name="normal" src="normal.png" />
+	<img name="over" src="over.png" />
+	<img name="pressed" src="pressed.png" />
+	<display>
+		<iscolor>true</iscolor>
+		<numcolors>65536</numcolors>
+		<numalphalevels>256</numalphalevels>
+		<foreground>000000</foreground>
+		<background>ffffff</background>
+		<rectangle>
+			<x>26</x>
+			<y>44</y>
+			<width>176</width>
+			<height>220</height>
+		</rectangle>
+		<paintable>
+			<x>0</x>
+			<y>22</y>
+			<width>176</width>
+			<height>176</height>
+		</paintable>
+		<icon name="up">
+			<paintable>
+				<x>78</x>
+				<y>206</y>
+				<width>12</width>
+				<height>12</height>
+			</paintable>
+			<img name="normal" src="up.png" />
+			<img name="pressed" src="up-pressed.png" />
+		</icon>
+		<icon name="down">
+			<paintable>
+				<x>88</x>
+				<y>206</y>
+				<width>12</width>
+				<height>12</height>
+			</paintable>
+			<img name="normal" src="down.png" />
+			<img name="pressed" src="down-pressed.png" />
+		</icon>
+		<status name="input">
+			<paintable>
+			    <!-- 22/2-7  -->
+				<x>4</x>
+				<y>4</y>
+				<width>14</width>
+				<height>7</height>
+			</paintable>
+			<img name="123" src="123.png" />
+			<img name="ABC" src="abc_upper.png" />
+			<img name="abc" src="abc_lower.png" />
+		</status>
+	</display>
+	<fonts hint="antialiasing">
+		<font face="system" style="plain" size="small">
+			<system name="SansSerif" style="plain" size="9" />
+		</font>
+		<font face="system" style="plain" size="medium">
+			<system name="SansSerif" style="plain" size="11" />
+		</font>
+		<font face="system" style="plain" size="large">
+			<system name="SansSerif" style="plain" size="13" />
+		</font>
+		<font face="system" style="bold" size="small">
+			<system name="SansSerif" style="bold" size="9" />
+		</font>
+		<font face="system" style="bold" size="medium">
+			<system name="SansSerif" style="bold" size="11" />
+		</font>
+		<font face="system" style="bold" size="large">
+			<system name="SansSerif" style="bold" size="13" />
+		</font>
+		<font face="system" style="italic" size="small">
+			<system name="SansSerif" style="italic" size="9" />
+		</font>
+		<font face="system" style="italic" size="medium">
+			<system name="SansSerif" style="italic" size="11" />
+		</font>
+		<font face="system" style="italic" size="large">
+			<system name="SansSerif" style="italic" size="13" />
+		</font>
+		<font face="system" style="bold,italic" size="small">
+			<system name="SansSerif" style="bold,italic" size="9" />
+		</font>
+		<font face="system" style="bold,italic" size="medium">
+			<system name="SansSerif" style="bold,italic" size="11" />
+		</font>
+		<font face="system" style="bold,italic" size="large">
+			<system name="SansSerif" style="bold,italic" size="13" />
+		</font>
+		<font face="monospace" style="plain" size="small">
+			<system name="Monospaced" style="plain" size="9" />
+		</font>
+		<font face="monospace" style="plain" size="medium">
+			<system name="Monospaced" style="plain" size="11" />
+		</font>
+		<font face="monospace" style="plain" size="large">
+			<system name="Monospaced" style="plain" size="13" />
+		</font>
+		<font face="monospace" style="bold" size="small">
+			<system name="Monospaced" style="bold" size="9" />
+		</font>
+		<font face="monospace" style="bold" size="medium">
+			<system name="Monospaced" style="bold" size="11" />
+		</font>
+		<font face="monospace" style="bold" size="large">
+			<system name="Monospaced" style="bold" size="13" />
+		</font>
+		<font face="monospace" style="italic" size="small">
+			<system name="Monospaced" style="italic" size="9" />
+		</font>
+		<font face="monospace" style="italic" size="medium">
+			<system name="Monospaced" style="italic" size="11" />
+		</font>
+		<font face="monospace" style="italic" size="large">
+			<system name="Monospaced" style="italic" size="13" />
+		</font>
+		<font face="monospace" style="bold,italic" size="small">
+			<system name="Monospaced" style="bold,italic" size="9" />
+		</font>
+		<font face="monospace" style="bold,italic" size="medium">
+			<system name="Monospaced" style="bold,italic" size="11" />
+		</font>
+		<font face="monospace" style="bold,italic" size="large">
+			<system name="Monospaced" style="bold,italic" size="13" />
+		</font>
+		<font face="proportional" style="plain" size="small">
+			<system name="SansSerif" style="plain" size="9" />
+		</font>
+		<font face="proportional" style="plain" size="medium">
+			<system name="SansSerif" style="plain" size="11" />
+		</font>
+		<font face="proportional" style="plain" size="large">
+			<system name="SansSerif" style="plain" size="13" />
+		</font>
+		<font face="proportional" style="bold" size="small">
+			<system name="SansSerif" style="bold" size="9" />
+		</font>
+		<font face="proportional" style="bold" size="medium">
+			<system name="SansSerif" style="bold" size="11" />
+		</font>
+		<font face="proportional" style="bold" size="large">
+			<system name="SansSerif" style="bold" size="13" />
+		</font>
+		<font face="proportional" style="italic" size="small">
+			<system name="SansSerif" style="italic" size="9" />
+		</font>
+		<font face="proportional" style="italic" size="medium">
+			<system name="SansSerif" style="italic" size="11" />
+		</font>
+		<font face="proportional" style="italic" size="large">
+			<system name="SansSerif" style="italic" size="13" />
+		</font>
+		<font face="proportional" style="bold,italic" size="small">
+			<system name="SansSerif" style="bold,italic" size="9" />
+		</font>
+		<font face="proportional" style="bold,italic" size="medium">
+			<system name="SansSerif" style="bold,italic" size="11" />
+		</font>
+		<font face="proportional" style="bold,italic" size="large">
+			<system name="SansSerif" style="bold,italic" size="13" />
+		</font>
+	</fonts>
+	<input>
+		<haspointerevents>true</haspointerevents>
+		<haspointermotionevents>true</haspointermotionevents>
+		<hasrepeatevents>true</hasrepeatevents>
+		<softbutton name="SOFT1" alignment="LEFT">
+			<rectangle>
+				<x>16</x>
+				<y>282</y>
+				<width>60</width>
+				<height>35</height>
+			</rectangle>
+			<paintable>
+				<x>1</x>
+				<y>203</y>
+				<width>69</width>
+				<height>16</height>
+			</paintable>
+			<font face="system" style="plain" size="medium" />
+			<command>BACK</command>
+			<command>EXIT</command>
+			<command>CANCEL</command>
+			<command>STOP</command>
+		</softbutton>
+		<softbutton name="SOFT2" alignment="RIGHT">
+			<rectangle>
+				<x>154</x>
+				<y>282</y>
+				<width>60</width>
+				<height>35</height>
+			</rectangle>
+			<paintable>
+				<x>106</x>
+				<y>203</y>
+				<width>69</width>
+				<height>16</height>
+			</paintable>
+			<font face="system" style="plain" size="medium" />
+			<command>OK</command>
+			<command>SCREEN</command>
+			<command>ITEM</command>
+			<command>HELP</command>
+		</softbutton>
+		<button name="LEFT">
+            <polygon>
+				<point x="74" y="301" />
+				<point x="89" y="279" />
+				<point x="103" y="301" />
+				<point x="89" y="322" />
+			</polygon>
+		</button>
+		<button name="RIGHT">
+            <polygon>
+				<point x="140" y="280" />
+				<point x="154" y="300"/>
+				<point x="140" y="320" />
+				<point x="126" y="300"/>
+			</polygon>
+		</button>
+		<button name="UP">
+			<rectangle>
+				<x>97</x>
+				<y>274</y>
+				<width>36</width>
+				<height>14</height>
+			</rectangle>
+		</button>
+		<button name="DOWN">
+			<rectangle>
+				<x>97</x>
+				<y>311</y>
+				<width>36</width>
+				<height>14</height>
+			</rectangle>
+		</button>
+		<button name="SELECT">
+			<rectangle>
+				<x>101</x>
+				<y>288</y>
+				<width>25</width>
+				<height>23</height>
+			</rectangle>
+		</button>
+		<button name="0">
+			<chars>
+				<char></char>
+				<char>0</char>
+			</chars>
+			<rectangle>
+				<x>87</x>
+				<y>432</y>
+				<width>55</width>
+				<height>31</height>
+			</rectangle>
+		</button>
+		<button name="1">
+			<chars>
+				<char>.</char>
+				<char>,</char>
+				<char>?</char>
+				<char>!</char>
+				<char>:</char>
+				<char>;</char>
+				<char>-</char>
+				<char>+</char>
+				<char>#</char>
+				<char>*</char>
+				<char>(</char>
+				<char>)</char>
+				<char>'</char>
+				<char>"</char>
+				<char>_</char>
+				<char>@</char>
+				<char>&amp;</char>
+				<char>$</char>
+				<char>%</char>
+				<char>/</char>
+				<char>&lt;</char>
+				<char>&gt;</char>
+				<char>=</char>
+				<char>1</char>
+			</chars>
+			<chars input="123">
+				<char>1</char>
+				<char>.</char>
+				<char>-</char>
+				<char>(</char>
+				<char>)</char>
+				<char>+</char>
+			</chars>
+			<rectangle>
+				<x>19</x>
+				<y>324</y>
+				<width>55</width>
+				<height>34</height>
+			</rectangle>
+		</button>
+		<button name="2">
+			<chars>
+				<char>a</char>
+				<char>b</char>
+				<char>c</char>
+				<char>2</char>
+			</chars>
+			<rectangle>
+				<x>88</x>
+				<y>328</y>
+				<width>56</width>
+				<height>31</height>
+			</rectangle>
+		</button>
+		<button name="3">
+			<chars>
+				<char>d</char>
+				<char>e</char>
+				<char>f</char>
+				<char>3</char>
+			</chars>
+			<rectangle>
+				<x>156</x>
+				<y>323</y>
+				<width>54</width>
+				<height>32</height>
+			</rectangle>
+		</button>
+		<button name="4">
+			<chars>
+				<char>g</char>
+				<char>h</char>
+				<char>i</char>
+				<char>4</char>
+			</chars>
+			<rectangle>
+				<x>18</x>
+				<y>358</y>
+				<width>58</width>
+				<height>32</height>
+			</rectangle>
+		</button>
+		<button name="5">
+			<chars>
+				<char>j</char>
+				<char>k</char>
+				<char>l</char>
+				<char>5</char>
+			</chars>
+			<rectangle>
+				<x>87</x>
+				<y>362</y>
+				<width>59</width>
+				<height>34</height>
+			</rectangle>
+		</button>
+		<button name="6">
+			<chars>
+				<char>m</char>
+				<char>n</char>
+				<char>o</char>
+				<char>6</char>
+			</chars>
+			<rectangle>
+				<x>155</x>
+				<y>357</y>
+				<width>54</width>
+				<height>33</height>
+			</rectangle>
+		</button>
+		<button name="7">
+			<chars>
+				<char>p</char>
+				<char>q</char>
+				<char>r</char>
+				<char>s</char>
+				<char>7</char>
+			</chars>
+			<rectangle>
+				<x>17</x>
+				<y>393</y>
+				<width>55</width>
+				<height>32</height>
+			</rectangle>
+		</button>
+		<button name="8">
+			<chars>
+				<char>t</char>
+				<char>u</char>
+				<char>v</char>
+				<char>8</char>
+			</chars>
+			<rectangle>
+				<x>87</x>
+				<y>397</y>
+				<width>54</width>
+				<height>31</height>
+			</rectangle>
+		</button>
+		<button name="9">
+			<chars>
+				<char>w</char>
+				<char>x</char>
+				<char>y</char>
+				<char>z</char>
+				<char>9</char>
+			</chars>
+			<rectangle>
+				<x>156</x>
+				<y>393</y>
+				<width>56</width>
+				<height>31</height>
+			</rectangle>
+		</button>
+		<button name="ASTERISK">
+			<chars>
+				<char>*</char>
+				<char>+</char>
+			</chars>
+			<rectangle>
+				<x>18</x>
+				<y>428</y>
+				<width>54</width>
+				<height>32</height>
+			</rectangle>
+		</button>
+		<button name="POUND" modeChange="true">
+			<rectangle>
+				<x>156</x>
+				<y>427</y>
+				<width>55</width>
+				<height>32</height>
+			</rectangle>
+		</button>
+	</input>
+</device>

Propchange: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/device.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/down-pressed.png
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/down-pressed.png?rev=660326&view=auto
==============================================================================
Binary file - no diff available.

Propchange: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/down-pressed.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/down.png
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/down.png?rev=660326&view=auto
==============================================================================
Binary file - no diff available.

Propchange: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/down.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/up-pressed.png
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/up-pressed.png?rev=660326&view=auto
==============================================================================
Binary file - no diff available.

Propchange: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/up-pressed.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/up.png
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/up.png?rev=660326&view=auto
==============================================================================
Binary file - no diff available.

Propchange: harmony/enhanced/microemulator/microemu-javase/src/main/resources/org/microemu/device/default/up.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseGCFTestCase.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseGCFTestCase.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseGCFTestCase.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseGCFTestCase.java Mon May 26 15:20:19 2008
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package javax.microedition.io;
+
+import org.microemu.SSLContextSetup;
+import org.microemu.TestEnvPropertiesHelper;
+
+import junit.framework.TestCase;
+
+/**
+ * @author vlads
+ *
+ */
+public class BaseGCFTestCase extends TestCase {
+
+	/**
+	 * This is the server where I keep HTTPS and Socket test response server.
+	 * If change add server to test-servers.keystore if it self-signed certificate.
+	 * 
+	 * War sources here https://pyx4j.com/svn/pyx4me/pyx4me-host/pyx4me-test-server
+	 * 
+	 */
+	public static final String TEST_HOST = findNoProxyTestHost();
+
+	/**
+	 * File  ${home}/.microemulator/tests.properties is used for configuration
+	 * @return
+	 */
+	private static String findNoProxyTestHost() {
+		return TestEnvPropertiesHelper.getProperty("gcf.no-proxy-test-host", "pyx4j.com");
+	}
+
+	/**
+	 * TODO Support proxy configuration.
+	 */
+	protected void setUp() throws Exception {
+		// Some tests may run via proxy but not all.
+		if (System.getProperty("http.proxyHost") == null) {
+			//System.setProperty("http.proxyHost", "genproxy");
+			//System.setProperty("http.proxyPort", String.valueOf(8900));
+		}
+	}
+
+	/**
+	 * Trust our self-signed test-servers
+	 */
+	protected void setupSSLContext() {
+	    SSLContextSetup.setUp();
+	}
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseGCFTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseTestHttpConnection.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseTestHttpConnection.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseTestHttpConnection.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseTestHttpConnection.java Mon May 26 15:20:19 2008
@@ -0,0 +1,225 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package javax.microedition.io;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Calendar;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+public abstract class BaseTestHttpConnection extends BaseGCFTestCase {
+
+	protected static final String testFile = "/robots.txt";
+
+	protected static final String testServlet = "/pyx4me-test-server/";
+	
+	protected abstract HttpConnection openHttpConnection(String query) throws IOException;
+
+
+    private String getData(HttpConnection hc) throws IOException {
+        InputStream is = hc.openInputStream();
+        StringBuffer buf = new StringBuffer();
+        try {
+            int ch;
+            while ((ch = is.read()) != -1) {
+                buf.append((char)ch);
+            }
+            return buf.toString();
+        } catch (IOException e) {
+            if ("socket closed".equals(e.getMessage())) {
+                System.out.println("InputStream socket closed");
+                return buf.toString();
+            } else {
+                throw e;
+            }
+        } finally {
+            is.close();
+        }
+    }
+    
+    protected void assertHttpConnectionMethods(HttpConnection hc) throws IOException {
+		assertEquals("getHost()", TEST_HOST, hc.getHost());
+		assertEquals("getFile()", testFile, hc.getFile());
+		assertEquals("getRequestMethod()", HttpConnection.GET, hc.getRequestMethod());
+		String server = hc.getHeaderField("Server");
+		assertTrue("getHeaderField()", ((server.indexOf("Apache") != -1) || (server.indexOf("Sun-ONE") != -1)) );
+		Calendar year2005 = Calendar.getInstance();
+		year2005.set(Calendar.YEAR, 2005);
+		long past2005 = year2005.getTime().getTime();
+		assertTrue("getDate()", hc.getDate() > past2005);
+		assertTrue("getExpiration()", hc.getDate() > past2005);
+		assertTrue("getLastModified()", hc.getDate() > past2005);
+		assertTrue("getResponseMessage()", hc.getResponseMessage().endsWith("OK"));
+    }
+    
+    public void testResponseCode() throws IOException {
+    	HttpConnection hc = openHttpConnection(testFile + ".gone");
+        try {
+			assertEquals("getResponseCode()", HttpConnection.HTTP_NOT_FOUND, hc.getResponseCode());
+		} finally {
+			hc.close();
+		}
+    }
+    
+    public void testInputStream() throws IOException {
+    	HttpConnection hc = openHttpConnection(testFile);
+        try {
+			assertEquals("getResponseCode()", HttpConnection.HTTP_OK, hc.getResponseCode());
+			String data = getData(hc);
+			assertTrue("data recived", data.startsWith("User-agent: *"));
+		} finally {
+			hc.close();
+		}
+    }
+
+    private String getDataVIADataInputStream(DataInputStream is) throws IOException {
+        StringBuffer buf = new StringBuffer();
+        try {
+            int ch;
+            while ((ch = is.read()) != -1) {
+                buf.append((char)ch);
+            }
+            return buf.toString();
+        } catch (IOException e) {
+            if ("socket closed".equals(e.getMessage())) {
+                System.out.println("InputStream socket closed");
+                return buf.toString();
+            } else {
+                throw e;
+            }
+        } finally {
+            is.close();
+        }
+    }
+    
+    public void testDataInputStream() throws IOException {
+    	HttpConnection hc = openHttpConnection(testFile);
+        try {
+			assertEquals("getResponseCode()", HttpConnection.HTTP_OK, hc.getResponseCode());
+			String data = getDataVIADataInputStream(hc.openDataInputStream());
+			assertTrue("data recived", data.startsWith("User-agent: *"));
+		} finally {
+			hc.close();
+		}
+    }
+    
+    public void testContentConnection() throws IOException {
+    	HttpConnection hc = openHttpConnection(testFile);
+        try {
+			assertEquals("getResponseCode()", HttpConnection.HTTP_OK, hc.getResponseCode());
+			ContentConnection c = hc;
+			 int len = (int)c.getLength();
+			 assertTrue("getLength()", len > 10);
+			String data = getDataVIADataInputStream(hc.openDataInputStream());
+			assertTrue("data recived", data.startsWith("User-agent: *"));
+		} finally {
+			hc.close();
+		}
+    }
+    
+    public void testHeaders() throws IOException {
+		HttpConnection hc = openHttpConnection(testServlet + "header");
+		try {
+			hc.setRequestMethod(HttpConnection.POST);
+			Hashtable r = new Hashtable();
+			r.put("tkey1", "tvalue1");
+			r.put("Test-Key-Val", "t-value-1");
+			r.put("tkey2", "t; value: =/../");
+			r.put("tkey3", "X=DQAAG4AADTwpw:yj=b4m4G9DWbK-es8VnRXfT1w:gmproxy=GUG9jB5Ph9g:gmyj=SRs7Qh_KFZc;");
+			for (Enumeration e = r.keys(); e.hasMoreElements();) {
+				String name = (String) e.nextElement();
+				String value = (String) r.get(name);
+				hc.setRequestProperty(name, value);
+			}
+			assertEquals(HttpConnection.HTTP_OK, hc.getResponseCode());
+
+			for (Enumeration e = r.keys(); e.hasMoreElements();) {
+				String name = (String) e.nextElement();
+				String value = (String) r.get(name);
+				assertEquals(value, hc.getHeaderField("Re-" + name));
+			}
+
+			assertEquals(HttpConnection.POST, hc.getHeaderField("test-method"));
+			hc.close();
+
+			// Test GET
+			hc = openHttpConnection(testServlet + "header");
+			hc.setRequestMethod(HttpConnection.GET);
+			for (Enumeration e = r.keys(); e.hasMoreElements();) {
+				String name = (String) e.nextElement();
+				String value = (String) r.get(name);
+				hc.setRequestProperty(name, value);
+			}
+			assertEquals(HttpConnection.HTTP_OK, hc.getResponseCode());
+			for (Enumeration e = r.keys(); e.hasMoreElements();) {
+				String name = (String) e.nextElement();
+				String value = (String) r.get(name);
+				assertEquals(value, hc.getHeaderField("Re-" + name));
+			}
+
+			assertEquals(HttpConnection.GET, hc.getHeaderField("test-method"));
+		} finally {
+			hc.close();
+		}
+	}
+    
+    private String sendData(HttpConnection hc) throws IOException {
+        String msg = "Sending\n " + " Some$$Data\r\n\rend";
+        hc.setRequestProperty("X-Wap-Proxy-Cookie", "none");
+        hc.setRequestProperty("Cache-Control", "no-cache, no-transform");
+        hc.setRequestProperty("Content-Type", "application/binary");
+        hc.setRequestProperty("Content-Length", "" + (msg.getBytes().length));
+        hc.setRequestProperty("User-agent", "UNTRUSTED/1.0");
+        hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+        hc.setRequestProperty("Test-data-crc", String.valueOf(msg.hashCode()));
+        OutputStream os = hc.openOutputStream();
+        try {
+            os.write(msg.getBytes());
+        } finally {
+            os.close();
+        }
+        return msg;
+    }
+    
+    public void testBody() throws IOException {
+		String msg;
+		HttpConnection hc = openHttpConnection(testServlet + "body");
+		try {
+			msg = sendData(hc);
+			assertEquals(HttpConnection.HTTP_OK, hc.getResponseCode());
+			assertNull("No Data error", hc.getHeaderField("Test-data-crc-error"));
+			assertEquals("Data crc", String.valueOf(msg.hashCode()), hc.getHeaderField("Test-data-crc"));
+			assertEquals(msg, getData(hc));
+			hc.close();
+
+			hc = openHttpConnection(testServlet + "body");
+			msg = sendData(hc);
+			assertEquals(HttpConnection.HTTP_OK, hc.getResponseCode());
+			assertNull("No Data error", hc.getHeaderField("Test-data-crc-error"));
+			assertEquals("Data crc", String.valueOf(msg.hashCode()), hc.getHeaderField("Test-data-crc"));
+			assertEquals(msg, getData(hc));
+		} finally {
+			hc.close();
+		}
+	}
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/BaseTestHttpConnection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpConnectionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpConnectionTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpConnectionTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpConnectionTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,44 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package javax.microedition.io;
+
+import java.io.IOException;
+
+public class HttpConnectionTest extends BaseTestHttpConnection {
+
+	private static final String testInetHTTPUrl = "http://" + TEST_HOST + testFile;
+
+    public void testConnection() throws IOException {
+    	HttpConnection hc = (HttpConnection)Connector.open(testInetHTTPUrl, Connector.READ, true);
+        try {
+			assertEquals("getResponseCode()", HttpConnection.HTTP_OK, hc.getResponseCode());
+			assertEquals("getPort()", 80, hc.getPort());
+			assertEquals("getProtocol()", "http", hc.getProtocol());
+			assertEquals("getURL()", testInetHTTPUrl, hc.getURL());
+			assertHttpConnectionMethods(hc);
+		} finally {
+			hc.close();
+		}
+    }
+    
+    protected HttpConnection openHttpConnection(String query) throws IOException {
+    	return (HttpConnection)Connector.open("http://" + TEST_HOST + query, Connector.READ, true);
+    }
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpConnectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpsConnectionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpsConnectionTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpsConnectionTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpsConnectionTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,88 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package javax.microedition.io;
+
+import java.io.IOException;
+
+import javax.microedition.pki.Certificate;
+
+public class HttpsConnectionTest extends BaseTestHttpConnection {
+	
+	private static final String testInetHTTPUrl = "https://" + TEST_HOST + testFile;
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		super.setupSSLContext();
+	}
+	
+    protected HttpConnection openHttpConnection(String query) throws IOException {
+    	return (HttpsConnection)Connector.open("https://" + TEST_HOST + query, Connector.READ, true);
+    }
+    
+    public void testConnection() throws IOException {
+    	HttpsConnection hc = (HttpsConnection)Connector.open(testInetHTTPUrl, Connector.READ, true);
+        try {
+			assertEquals("getResponseCode()", HttpConnection.HTTP_OK, hc.getResponseCode());
+			assertEquals("getPort()", 443, hc.getPort());
+			assertEquals("getProtocol()", "https", hc.getProtocol());
+			assertEquals("getURL()", testInetHTTPUrl, hc.getURL());
+			assertHttpConnectionMethods(hc);
+		} finally {
+			hc.close();
+		}
+    }
+    
+    public void testSecurityInfo() throws IOException {
+    	HttpsConnection hc = (HttpsConnection)Connector.open(testInetHTTPUrl, Connector.READ, true);
+        try {
+			assertEquals("getResponseCode()", HttpConnection.HTTP_OK, hc.getResponseCode());
+			SecurityInfo si = hc.getSecurityInfo();
+			assertNotNull("HttpsConnection.getSecurityInfo()", si);
+			assertNotNull("SecurityInfo.getProtocolVersion()", si.getProtocolVersion());
+			assertNotNull("SecurityInfo.getProtocolName()", si.getProtocolName());
+			assertNotNull("SecurityInfo.getCipherSuite()", si.getCipherSuite());
+			Certificate cert = si.getServerCertificate(); 
+			assertNotNull("SecurityInfo.getServerCertificate()", cert);
+			assertNotNull("Certificate.getSubject()", cert.getSubject());
+			assertNotNull("Certificate.getIssuer()", cert.getIssuer());
+			assertNotNull("Certificate.getType()", cert.getType());
+			assertNotNull("Certificate.getVersion()", cert.getVersion());
+			assertNotNull("Certificate.getSigAlgName()", cert.getSigAlgName());
+			assertTrue("Certificate.getNotBefore()", cert.getNotBefore() >= 0);
+			assertTrue("Certificate.getNotAfter()", cert.getNotAfter() >= 0);
+			String serialNumber = cert.getSerialNumber();
+			assertNotNull("Certificate.getSerialNumber()", serialNumber);
+		} finally {
+			hc.close();
+		}
+    }
+    
+    public void testWrongCertificate() throws IOException {
+    	HttpsConnection hc = (HttpsConnection)Connector.open("https://www.pyx4me.com" + testFile, Connector.READ, true);
+        try {
+        	// Produce java.io.IOException: HTTPS hostname wrong:  should be <www.pyx4me.com>
+        	hc.getResponseCode();
+        	fail("Should produce IOException");
+        } catch (IOException e) {
+		} finally {
+			hc.close();
+		}
+    }
+}
\ No newline at end of file

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/HttpsConnectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SSLConnectionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SSLConnectionTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SSLConnectionTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SSLConnectionTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,117 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package javax.microedition.io;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.microedition.pki.Certificate;
+
+public class SSLConnectionTest extends BaseGCFTestCase {
+
+	private static final String TEST_PORT = "443";
+	
+	public static final String CRLF = "\r\n";
+	
+	
+	private void write(OutputStream os, String txt) throws IOException {
+		os.write(txt.getBytes());
+		os.write(CRLF.getBytes());
+	}
+	
+	private void validateHTTPReply(InputStream is) throws IOException {
+		StringBuffer buf = new StringBuffer();
+		int ch, ch1 = 0;
+		while ((ch = is.read()) != -1) {
+			if ((ch == '\n') && (ch1 == '\r')) {
+				break;
+			}
+			buf.append((char) ch);
+			ch1 = ch;
+		}
+		if ((!buf.toString().startsWith("HTTP/1.0 200")) &&
+		     (!buf.toString().startsWith("HTTP/1.1 200"))){
+			buf.append("[EOF]");
+			throw new IOException(buf.toString());
+		}
+		if (ch == -1) {
+			throw new EOFException("No http header from proxy");
+		}
+		int crCount = 0;
+		while ((ch = is.read()) != -1) {
+			if ((ch == '\n') && (ch1 == '\r')) {
+				crCount++;
+				if (crCount == 2) {
+					break;
+				}
+			} else if (ch != '\r') {
+				crCount = 0;
+			}
+			ch1 = ch;
+		}
+		if (ch == -1) {
+			throw new EOFException("No data after http header from proxy");
+		}
+	}
+	
+	public void testSecureConnection() throws IOException {
+		// Basicaly Performs HTTPS GET
+		SecureConnection sc = (SecureConnection) Connector.open("ssl://" + TEST_HOST + ":" + TEST_PORT);
+		
+		sc.setSocketOption(SocketConnection.LINGER, 5);
+
+		OutputStream os = sc.openOutputStream();
+		write(os, "GET /robots.txt HTTP/1.0");
+		write(os, "User-Agent: UNTRUSTED/1.0");
+		write(os, "Host: " + TEST_HOST);
+		os.write(CRLF.getBytes());
+		os.flush();
+		
+		InputStream is = sc.openInputStream();
+		validateHTTPReply(is);
+		sc.close();
+	}
+
+    public void testSecurityInfo() throws IOException {
+    	SecureConnection sc = (SecureConnection) Connector.open("ssl://" + TEST_HOST + ":" + TEST_PORT);
+        try {
+			SecurityInfo si = sc.getSecurityInfo();
+			assertNotNull("SecureConnection.getSecurityInfo()", si);
+			assertNotNull("SecurityInfo.getProtocolVersion()", si.getProtocolVersion());
+			assertNotNull("SecurityInfo.getProtocolName()", si.getProtocolName());
+			assertNotNull("SecurityInfo.getCipherSuite()", si.getCipherSuite());
+			Certificate cert = si.getServerCertificate(); 
+			assertNotNull("SecurityInfo.getServerCertificate()", cert);
+			//TODO assertNotNull("Certificate.getSubject()", cert.getSubject());
+			assertNotNull("Certificate.getIssuer()", cert.getIssuer());
+			assertNotNull("Certificate.getType()", cert.getType());
+			assertNotNull("Certificate.getVersion()", cert.getVersion());
+			//TODO assertNotNull("Certificate.getSigAlgName()", cert.getSigAlgName());
+			//TODO assertTrue("Certificate.getNotBefore()", cert.getNotBefore() >= 0);
+			//TODO assertTrue("Certificate.getNotAfter()", cert.getNotAfter() >= 0);
+			//TODO String serialNumber = cert.getSerialNumber();
+			//TODO assertNotNull("Certificate.getSerialNumber()", serialNumber);
+		} finally {
+			sc.close();
+		}
+    }
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SSLConnectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SocketConnectionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SocketConnectionTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SocketConnectionTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SocketConnectionTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,141 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package javax.microedition.io;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class SocketConnectionTest extends BaseGCFTestCase {
+
+	private static final String loopbackHost = TEST_HOST;
+	//private static final String loopbackHost = "localhost";
+	
+	private static final String loopbackPort = "9127";
+	
+	private static final String serverPort = "7127";
+	
+	
+	private void runLoopbackTest(String url) throws IOException {
+		System.out.println("Connecting to " + url);
+		SocketConnection sc = (SocketConnection) Connector.open(url);
+		
+		try {
+			sc.setSocketOption(SocketConnection.LINGER, 5);
+
+			InputStream is = sc.openInputStream();
+			OutputStream os = sc.openOutputStream();
+
+			String testData = "OK\r\n"; 
+			
+			os.write(testData.getBytes());
+			os.flush();
+			
+			StringBuffer buf = new StringBuffer(); 
+			
+			int ch = 0;
+			int count = 0;
+			while (ch != -1) {
+				ch = is.read();
+				buf.append((char)ch);
+				count ++;
+				if (count >= testData.length()) {
+					break;
+				}
+			}
+
+			assertEquals("Data received", buf.toString(), testData);
+			
+			is.close();
+			os.close();
+		} finally {
+			sc.close();
+		}
+
+	}
+	
+	public void testLoopback() throws IOException {
+		runLoopbackTest("socket://" + loopbackHost + ":" + loopbackPort);
+	}
+	
+	private class ServerThread extends Thread {
+		
+		ServerSocketConnection scn;
+		
+		boolean started = true;
+		
+		boolean finished = true;
+		
+		ServerThread(ServerSocketConnection scn) {
+			super.setDaemon(true);
+			this.scn = scn;
+		}
+		
+		public void run() {
+			try {
+				// Wait for a connection.
+				SocketConnection sc = (SocketConnection) scn.acceptAndOpen();
+				
+				InputStream is = sc.openInputStream();
+				OutputStream os = sc.openOutputStream();
+				
+				int ch = 0;
+				int count = 0;
+				while (ch != -1) {
+					ch = is.read();
+					if (ch == -1) {
+						break;
+					}
+					os.write(ch);
+					os.flush();
+					count ++;
+				}
+			} catch(IOException e) {
+				e.printStackTrace();
+			} finally {
+				finished = true;
+			}
+		}
+	}
+	
+	static public void assertNotEquals(String message, String expected, String actual) {
+		assertFalse(message + " [" + expected + " == "+ actual + "]", expected.equals(actual));
+	}
+	
+	public void testServerSocketConnection() throws IOException, InterruptedException {
+		ServerSocketConnection scn = (ServerSocketConnection) Connector.open("socket://:" + serverPort);
+
+		try {
+			ServerThread t = new ServerThread(scn);
+			t.start();
+			while (!t.started) {
+				Thread.sleep(20);
+			}
+			assertEquals("Server Port", Integer.valueOf(serverPort).intValue(), scn.getLocalPort());
+			assertNotEquals("Server Host", "0.0.0.0", scn.getLocalAddress());
+			assertNotEquals("Server Host", "localhost", scn.getLocalAddress());
+			//assertNotEquals("Server Host", "127.0.0.1", scn.getLocalAddress());
+			
+			runLoopbackTest("socket://" + scn.getLocalAddress() + ":" + scn.getLocalPort());
+		} finally {
+			scn.close();
+		}
+	}
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/javax/microedition/io/SocketConnectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/SSLContextSetup.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/SSLContextSetup.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/SSLContextSetup.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/SSLContextSetup.java Mon May 26 15:20:19 2008
@@ -0,0 +1,74 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.KeyStore;
+import java.security.SecureRandom;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+
+/**
+ * @author vlads
+ * 
+ * See src/test/ssl/read-me.txt
+ * 
+ */
+public class SSLContextSetup {
+	
+	private static boolean initialized = false;
+	
+	public static synchronized void setUp() {
+    	if (initialized) {
+    		return;
+    	}
+    	InputStream is = null;
+        try {
+            KeyStore trustStore = KeyStore.getInstance("JKS");
+            is = SSLContextSetup.class.getResourceAsStream("/test-servers.keystore"); 
+            if (is == null) {
+            	new Error("keystore not found");
+            }
+            trustStore.load(is, "microemu2006".toCharArray());
+            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");  
+            trustManagerFactory.init(trustStore);  
+            TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
+            
+            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
+            SSLContext context = SSLContext.getInstance("TLS");
+            context.init(null, trustManagers, secureRandom);
+            HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
+            initialized = true;
+        } catch (Throwable e) {
+            throw new Error(e);
+        } finally {
+        	if (is != null) {
+        		try {
+					is.close();
+				} catch (IOException ignore) {
+				}
+        	}
+        }
+    }
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/SSLContextSetup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/TestEnvPropertiesHelper.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/TestEnvPropertiesHelper.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/TestEnvPropertiesHelper.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/TestEnvPropertiesHelper.java Mon May 26 15:20:19 2008
@@ -0,0 +1,65 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.microemu.app.Config;
+
+public class TestEnvPropertiesHelper {
+
+	static final Properties utProperties = loadProperties(); 
+	
+	static final String FILE_NAME = "tests.properties";
+	
+	/**
+	 * File  ${home}/.microemulator/test.properties is used for configuration
+	 * @return
+	 */
+	public static String getProperty(String key, String defaultValue) {
+		return utProperties.getProperty(key, defaultValue);
+	}
+
+	private static Properties loadProperties() {
+		Properties prop = new Properties();
+		
+		File meHomeRoot = Config.getConfigPath();
+		if (meHomeRoot == null) {
+			return prop;
+		}
+		
+		File file = new File(meHomeRoot, FILE_NAME);
+		if (!file.exists() || !file.canRead()) {
+			return prop;
+		}
+		
+		FileInputStream input;
+        try {
+            input = new FileInputStream(file);
+            prop.load((InputStream) input);
+        } catch (Exception e) {
+            System.err.println("Error reading properties " + e.toString());
+        }
+		return prop;
+	}
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/TestEnvPropertiesHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/classloader/MIDletClassLoaderTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/classloader/MIDletClassLoaderTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/classloader/MIDletClassLoaderTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/classloader/MIDletClassLoaderTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,147 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu.app.classloader;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import junit.framework.TestCase;
+
+import org.microemu.Injected;
+import org.microemu.app.util.EventCatureLoggerAppender;
+import org.microemu.app.util.IOUtils;
+import org.microemu.app.util.MIDletResourceLoader;
+import org.microemu.app.util.MIDletSystemProperties;
+import org.microemu.log.Logger;
+import org.microemu.log.LoggingEvent;
+
+/**
+ * @author vlads
+ *
+ */
+public class MIDletClassLoaderTest extends TestCase {
+
+	public static final String TEST_APP_JAR = "bytecode-test-app.jar"; 
+	
+	public static final String TEST_CLASS = "org.TestMain";
+	
+	EventCatureLoggerAppender capture;
+
+	private boolean enhanceCatchBlockSave;
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		capture = new EventCatureLoggerAppender();
+		Logger.addAppender(capture);
+		enhanceCatchBlockSave = MIDletClassLoader.enhanceCatchBlock;
+	}
+	
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		Logger.removeAppender(capture);
+		MIDletClassLoader.enhanceCatchBlock = enhanceCatchBlockSave; 
+	}
+	
+	public void testGetResourceAsStream() throws Exception {
+		
+		ClassLoader parent = MIDletClassLoaderTest.class.getClassLoader();
+		
+		URL jarURL = parent.getResource(TEST_APP_JAR);
+		assertNotNull("Can't find app jar", jarURL);
+		
+		URLClassLoader ucl = new URLClassLoader(new URL[]{jarURL});
+		
+		final String testFile = "META-INF/MANIFEST.MF";
+		
+		InputStream is = null;
+		try {
+			is = ucl.getResourceAsStream(testFile);
+			assertNotNull("URLClassLoader", is);
+		} finally {
+			IOUtils.closeQuietly(is);
+		}
+		
+		MIDletClassLoader mcl = new MIDletClassLoader(parent);
+		mcl.addURL(jarURL);
+		try {
+			is = ucl.getResourceAsStream(testFile);
+			assertNotNull("MIDletClassLoader", is);
+		} finally {
+			IOUtils.closeQuietly(is);
+		}
+		
+	}
+	
+	public void testApplication() throws Exception {
+		ClassLoader parent = MIDletClassLoaderTest.class.getClassLoader();
+		URL jarURL = parent.getResource(TEST_APP_JAR);
+		assertNotNull("Can't find app jar", jarURL);
+		
+		System.setProperty("test.verbose", "1");
+		
+		MIDletSystemProperties.setProperty("test.property1", "1");
+		MIDletSystemProperties.setProperty("microedition.platform", null);
+		
+		MIDletClassLoader.enhanceCatchBlock = false;
+		MIDletClassLoader mcl = new MIDletClassLoader(parent);
+		mcl.disableClassPreporcessing(Injected.class);
+		MIDletResourceLoader.classLoader = mcl;
+		mcl.addURL(jarURL);
+		
+		Class instrumentedClass = mcl.loadClass(TEST_CLASS);
+		Runnable instrumentedInstance = (Runnable) instrumentedClass.newInstance();
+		instrumentedInstance.run();
+		
+		LoggingEvent lastEvent = capture.getLastEvent();
+		assertNotNull("got event", lastEvent);
+		assertEquals("All tests OK", lastEvent.getMessage());
+		StackTraceElement ste = lastEvent.getLocation();
+		assertEquals("MethodName", "run", ste.getMethodName());
+		assertEquals("ClassName", TEST_CLASS, ste.getClassName());
+
+	}
+	
+	private void runEnhanceCatchBlock(MIDletClassLoader mcl, String name) throws Exception {
+		Class instrumentedClass = mcl.loadClass(name);
+		Runnable instrumentedInstance = (Runnable) instrumentedClass.newInstance();
+		instrumentedInstance.run();
+		
+		LoggingEvent lastEvent = capture.getLastEvent();
+		assertNotNull("got event", lastEvent);
+		assertNotNull("got message", lastEvent.getMessage());
+		System.out.println("[" +lastEvent.getMessage() + "]");
+		assertTrue("error message", lastEvent.getMessage().indexOf("MIDlet caught") != -1);
+	}
+	
+	public void x_testEnhanceCatchBlock() throws Exception {
+		ClassLoader parent = MIDletClassLoaderTest.class.getClassLoader();
+		URL jarURL = parent.getResource(TEST_APP_JAR);
+		assertNotNull("Can't find app jar", jarURL);
+		
+		System.setProperty("test.verbose", "1");
+		
+		MIDletClassLoader.enhanceCatchBlock = true;
+		MIDletClassLoader mcl = new MIDletClassLoader(parent);
+		mcl.disableClassPreporcessing(Injected.class);
+		mcl.addURL(jarURL);
+		runEnhanceCatchBlock(mcl, "org.catchBlock.CatchThrowable");
+	}
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/classloader/MIDletClassLoaderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/EventCatureLoggerAppender.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/EventCatureLoggerAppender.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/EventCatureLoggerAppender.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/EventCatureLoggerAppender.java Mon May 26 15:20:19 2008
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu.app.util;
+
+import org.microemu.log.LoggerAppender;
+import org.microemu.log.LoggingEvent;
+
+public class EventCatureLoggerAppender implements LoggerAppender {
+
+	private LoggingEvent lastEvent; 
+	
+	public void append(LoggingEvent event) {
+		lastEvent = event;
+	}
+
+	public void clearLastEvent() {
+		lastEvent = null;
+	}
+	
+	public LoggingEvent getLastEvent() {
+		LoggingEvent ev = lastEvent;
+		lastEvent = null;
+		return ev;
+	}
+
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/EventCatureLoggerAppender.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/IOUtilsTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/IOUtilsTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/IOUtilsTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/IOUtilsTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,110 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu.app.util;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.microemu.app.classloader.MIDletClassLoaderTest;
+
+import junit.framework.TestCase;
+
+public class IOUtilsTest extends TestCase {
+
+	private static final String TEST_JAR = MIDletClassLoaderTest.TEST_APP_JAR; 
+
+	public void testCanonicalFileURL() throws Exception {
+		
+		ClassLoader parent = IOUtilsTest.class.getClassLoader();
+		
+		URL jarURL = parent.getResource(TEST_JAR);
+		assertNotNull("Can't find jar", jarURL);
+		
+		File file = new File(jarURL.getPath());
+		
+		assertTrue("is real file",  file.canRead());
+		
+		String urlString = IOUtils.getCanonicalFileURL(file);
+		System.out.println("local file url [" + urlString + "]");
+		URL testURL = new URL(urlString);
+		
+		InputStream is = testURL.openStream();
+		assertNotNull("Can't openStream jar", is);
+		IOUtils.closeQuietly(is);
+		
+		URLClassLoader ucl = new URLClassLoader(new URL[]{testURL});
+		
+		final String testFile = "META-INF/MANIFEST.MF";
+		
+		is = null;
+		try {
+			is = ucl.getResourceAsStream(testFile);
+			assertNotNull("URLClassLoader", is);
+		} finally {
+			IOUtils.closeQuietly(is);
+		}
+	}
+	
+	
+	/**
+	 * This manual tests. Just remove x_ to test on your system
+	 * @throws Exception
+	 */
+	public void x_testCanonicalNetworkFileURL() throws Exception {
+	
+		File file;
+		
+		/*  tested on Windows */
+		//file = new File("//vladsdesk/test/dir/" + TEST_JAR);
+		/*  tested on Windows */
+		//file = new File("//linux/vlads/test/dir/" + TEST_JAR);
+		
+		// Can't make this work on Linux connectin to XP!
+		//file = new File("//vladsdesk/test/dir/" + TEST_JAR);
+		//file = new File("//linux/vlads/test/dir/" + TEST_JAR);
+		file = new File("//localhost/home/vlads/test/dir/" + TEST_JAR);
+		
+		assertTrue("is real file",  file.canRead());
+		
+		String urlString = IOUtils.getCanonicalFileURL(file);
+		
+		System.out.println("network URL [" + urlString + "]");
+		
+		URL testURL = new URL(urlString);
+		
+		InputStream is = testURL.openStream();
+		assertNotNull("Can't openStream jar", is);
+		IOUtils.closeQuietly(is);
+		
+		URLClassLoader ucl = new URLClassLoader(new URL[]{testURL});
+		
+		final String testFile = "META-INF/MANIFEST.MF";
+		
+		is = null;
+		try {
+			is = ucl.getResourceAsStream(testFile);
+			assertNotNull("URLClassLoader", is);
+		} finally {
+			IOUtils.closeQuietly(is);
+		}
+	}
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/IOUtilsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/MIDletOutputStreamRedirectorTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/MIDletOutputStreamRedirectorTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/MIDletOutputStreamRedirectorTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/MIDletOutputStreamRedirectorTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,248 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu.app.util;
+
+import org.microemu.Injected;
+import org.microemu.log.Logger;
+import org.microemu.log.LoggingEvent;
+
+import junit.framework.TestCase;
+
+public class MIDletOutputStreamRedirectorTest extends TestCase {
+
+	EventCatureLoggerAppender capture;
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		capture = new EventCatureLoggerAppender();
+		Logger.addAppender(capture);
+	}
+	
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		Logger.removeAppender(capture);
+	}
+	
+	private void verify(LoggingEvent event, StackTraceElement b4call, final String message) {
+		assertNotNull("got event", event);
+		assertEquals(message, event.getMessage());
+		StackTraceElement ste = event.getLocation();
+		assertNotNull("Has location info", ste);
+		assertEquals("MethodName", b4call.getMethodName(), ste.getMethodName());
+		assertEquals("ClassName", b4call.getClassName(), ste.getClassName());
+		assertEquals("LineNumber", b4call.getLineNumber() + 1, ste.getLineNumber());
+	}
+	
+	public void testRedirectStack() throws Exception {
+		final String message = "Test text";
+		capture.clearLastEvent();
+		
+		StackTraceElement b4call = new Throwable().getStackTrace()[0];
+		Injected.out.println(message);
+		
+		verify(capture.getLastEvent(), b4call, message);
+		
+		b4call = new Throwable().getStackTrace()[0];
+		Injected.out.print(message + "\n");
+		
+		verify(capture.getLastEvent(), b4call, message);
+	}
+	
+	private class LogginThread extends Thread {
+
+		private boolean success = false;
+
+		public void run() {
+			try {
+				final String message = "Test text from LogginThread";
+				capture.clearLastEvent();
+
+				StackTraceElement b4call = new Throwable().getStackTrace()[0];
+				Injected.out.println(message);
+
+				verify(capture.getLastEvent(), b4call, message);
+
+				b4call = new Throwable().getStackTrace()[0];
+				Injected.out.print(message + "\n");
+
+				verify(capture.getLastEvent(), b4call, message);
+				
+				success = true;
+				
+			} finally {
+				synchronized (this) {
+					notifyAll();
+				}
+			}
+		}
+
+	}
+	
+	public void testRedirectStackFromThread() throws Exception {
+		LogginThread thread = new LogginThread();
+		synchronized (thread) {
+			thread.start();
+			thread.wait();
+		}
+		assertTrue("Log from Thread", thread.success);
+	}
+	
+	private class MIDletInternlaLogger {
+		
+		public void debug(String message) {
+			Injected.out.println(message);
+		}
+		
+		public void error(String message) {
+			Injected.out.println(message);
+		}
+		
+		public void log(String message) {
+			Injected.out.println(message);	
+		}
+	}
+	
+	public void testMIDletInternalLogger() throws Exception {
+		final String message = "Test text";
+		capture.clearLastEvent();
+		MIDletInternlaLogger log = new MIDletInternlaLogger();
+		
+		StackTraceElement b4call = new Throwable().getStackTrace()[0];
+		log.debug(message);
+		
+		verify(capture.getLastEvent(), b4call, message);
+		
+		b4call = new Throwable().getStackTrace()[0];
+		log.error(message);
+		
+		verify(capture.getLastEvent(), b4call, message);
+		
+		b4call = new Throwable().getStackTrace()[0];
+		log.log(message);
+		
+		verify(capture.getLastEvent(), b4call, message);
+		
+	}
+	
+	private class SubClass {
+		
+		void runTests(MIDletInternlaLogger log) {
+			final String message = "Sub class Test text";
+			StackTraceElement b4call = new Throwable().getStackTrace()[0];
+			log.debug(message);
+			
+			verify(capture.getLastEvent(), b4call, message);
+			
+			b4call = new Throwable().getStackTrace()[0];
+			log.error(message);
+			
+			verify(capture.getLastEvent(), b4call, message);
+			
+			b4call = new Throwable().getStackTrace()[0];
+			log.log(message);
+			
+			verify(capture.getLastEvent(), b4call, message);
+		}
+	}
+
+	public void testMIDletInternalLoggerSubClass() throws Exception {
+		capture.clearLastEvent();
+		MIDletInternlaLogger log = new MIDletInternlaLogger();
+		SubClass subtest = new SubClass();
+		subtest.runTests(log);
+	}
+	
+	private static class StaticLogger {
+		
+		public static void debug(String message) {
+			Injected.out.println(message);
+		}
+		
+		public static void error(String message) {
+			Injected.out.println(message);
+		}
+		
+		public static void log(String message) {
+			Injected.out.println(message);	
+		}
+	}
+	
+	public void testMIDletInternalStaticLogger() throws Exception {
+		final String message = "Test text Static logger";
+		capture.clearLastEvent();
+		
+		StackTraceElement b4call = new Throwable().getStackTrace()[0];
+		StaticLogger.debug(message);
+		
+		verify(capture.getLastEvent(), b4call, message);
+		
+		b4call = new Throwable().getStackTrace()[0];
+		StaticLogger.error(message);
+		
+		verify(capture.getLastEvent(), b4call, message);
+		
+		b4call = new Throwable().getStackTrace()[0];
+		StaticLogger.log(message);
+		
+		verify(capture.getLastEvent(), b4call, message);
+		
+	}
+	
+	private class LogginThreadStaticLogger extends Thread {
+
+		private boolean success = false;
+
+		public void run() {
+			try {
+				final String message = "Test text from LogginThread";
+				capture.clearLastEvent();
+
+				StackTraceElement b4call = new Throwable().getStackTrace()[0];
+				StaticLogger.debug(message);
+
+				verify(capture.getLastEvent(), b4call, message);
+
+				b4call = new Throwable().getStackTrace()[0];
+				StaticLogger.log(message + "\n");
+
+				verify(capture.getLastEvent(), b4call, message);
+				
+				success = true;
+				
+			} finally {
+				synchronized (this) {
+					notifyAll();
+				}
+			}
+		}
+
+	}
+	
+	public void testMIDletInternalStaticLoggerFromThread() throws Exception {
+		LogginThreadStaticLogger thread = new LogginThreadStaticLogger();
+		synchronized (thread) {
+			thread.start();
+			thread.wait();
+		}
+		assertTrue("Log from Thread", thread.success);
+	}
+
+}
+

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/app/util/MIDletOutputStreamRedirectorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/DeviceXMLInheritTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/DeviceXMLInheritTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/DeviceXMLInheritTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/DeviceXMLInheritTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,104 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu.device.impl;
+
+import org.microemu.device.impl.DeviceImpl;
+
+import nanoxml.XMLElement;
+
+import junit.framework.TestCase;
+
+/**
+ * @author vlads
+ *
+ */
+public class DeviceXMLInheritTest extends TestCase {
+
+	public void verifyXML(String parentXML, String childXML, String expectedXML) {
+		XMLElement child = new XMLElement();
+		child.parseString(childXML);
+		XMLElement parent = new XMLElement();
+		parent.parseString(parentXML);
+		XMLElement expected = new XMLElement();
+		expected.parseString(expectedXML);
+		
+		XMLElement result = DeviceImpl.inheritXML(parent, child, "/");
+		
+		//System.out.println("expected:" + expected.toString());
+		//System.out.println(" result:" + result.toString());
+		
+		assertEquals(result.toString(), expected.toString());
+	}
+	
+	public void testValueOverride() {
+		verifyXML("<device><display><numcolors>2</numcolors><vp>vpv</vp></display></device>", 
+				  "<device><display><numcolors>65536</numcolors><v>v1</v></display></device>", 
+				  "<device><display><numcolors>65536</numcolors><vp>vpv</vp><v>v1</v></display></device>");
+	}
+
+	public void testValueOverrideByName() {
+		verifyXML("<device><v>v1</v><v name=\"2\">v2</v><v name=\"3\">v3</v></device>", 
+				  "<device><v>v1m</v><v name=\"3\">v3m</v></device>", 
+				  "<device><v>v1m</v><v name=\"2\">v2</v><v name=\"3\">v3m</v></device>");
+
+		verifyXML("<device><v>v1</v><v name=\"2\">v2</v><v name=\"3\">v3</v></device>", 
+				  "<device><v name=\"3\">v3m</v><v>v1m</v></device>", 
+				  "<device><v>v1m</v><v name=\"2\">v2</v><v name=\"3\">v3m</v></device>");
+		
+		verifyXML("<device><v>v1</v><v name=\"2\">v2</v><v name=\"3\">v3</v></device>", 
+				  "<device><v>v1m</v><v name=\"3\" attrm=\"am\">v3m</v></device>", 
+				  "<device><v>v1m</v><v name=\"2\">v2</v><v name=\"3\" attrm=\"am\">v3m</v></device>");
+		
+		verifyXML("<device><v attrm=\"am\">v1</v><v name=\"2\">v2</v><v name=\"3\">v3</v></device>", 
+				  "<device><v>v1m</v><v name=\"3\">v3m</v></device>", 
+				  "<device><v attrm=\"am\">v1m</v><v name=\"2\">v2</v><v name=\"3\">v3m</v></device>");
+	}
+	
+	public void testValueOverrideByNameWithCase() {
+		verifyXML("<device><v>v1</v><v name=\"a\">v2</v><v name=\"b\">v3</v></device>", 
+				  "<device><v>v1m</v><v name=\"B\">v3m</v></device>", 
+				  "<device><v>v1m</v><v name=\"a\">v2</v><v name=\"b\">v3</v><v name=\"B\">v3m</v></device>");
+
+	}
+
+	public void testValueOverrideNoName() {
+		verifyXML("<device><v name=\"A\">v1</v></device>", 
+				  "<device><v name=\"B\">v2</v></device>", 
+				  "<device><v name=\"A\">v1</v><v name=\"B\">v2</v></device>");
+
+	}
+	
+	public void testValueOverrideFonts() {
+		verifyXML("<device><fonts>" +
+				   "<font face=\"system\" style=\"plain\" size=\"small\">F1</font>" +
+				   "<font face=\"system\" style=\"plain\" size=\"medium\">F2</font>" +
+				   "</fonts></device>",
+				   
+				   "<device><fonts>" +
+				   "<font face=\"system\" style=\"plain\" size=\"medium\">F2m</font>" +
+				   "</fonts></device>",
+				   
+				   "<device><fonts>" +
+				   "<font face=\"system\" style=\"plain\" size=\"small\">F1</font>" +
+				   "<font face=\"system\" style=\"plain\" size=\"medium\">F2m</font>" +
+				   "</fonts></device>");
+	}
+	
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/DeviceXMLInheritTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/PolygonTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/PolygonTest.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/PolygonTest.java (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/PolygonTest.java Mon May 26 15:20:19 2008
@@ -0,0 +1,106 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.microemu.device.impl;
+
+import junit.framework.TestCase;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author vlads
+ *
+ */
+public class PolygonTest extends TestCase {
+	
+	private static final boolean debug = false;
+
+	Pattern rx = Pattern.compile("(?:(\\d+)\\s?[,]\\s?(\\d+)(?:\\s?[;]\\s?)?)");
+	
+	private void verify(String polygon, String points, boolean expected) {
+		Polygon pl = new Polygon();
+		//This is know to work fine.
+		java.awt.Polygon awt = new java.awt.Polygon();
+
+		
+		Matcher mp = rx.matcher(polygon);
+		while (mp.find()) {
+			int px = Integer.parseInt(mp.group(1));
+			int py = Integer.parseInt(mp.group(2));
+			pl.addPoint(px, py);
+			awt.addPoint(px, py);
+		}
+		Matcher mxy = rx.matcher(points);
+		while (mxy.find()) {
+			int x = Integer.parseInt(mxy.group(1));
+			int y = Integer.parseInt(mxy.group(2));
+			String xy = "[" + x + ", " + y + "]";
+			assertEquals("awt " + polygon + " contains " + xy, expected, awt.contains(x, y));
+			
+			if (debug && expected != pl.contains(x, y)) {
+				System.out.println("error impl " + polygon + " contains " + xy + "? expected:" + expected);
+				pl.contains(x, y);
+				awt.contains(x, y);
+			} else if (debug) {
+				System.out.println("OK impl " + polygon + " contains " + xy + "? expected:" + expected);
+			}
+			assertEquals("impl " + polygon + " contains " + xy, expected, pl.contains(x, y));
+		}
+		
+		// Test other point
+		int x = pl.getBounds().x - 2;
+		int y= pl.getBounds().y - 2;
+		int w = pl.getBounds().width + 4;
+		int h = pl.getBounds().height + 4;
+		for(int xx = x ; xx <= w; xx ++) {
+			for(int yy = y ; yy <= h; yy ++) {
+				int xt = x + xx;
+				int yt = y + yy;
+				boolean exp = awt.contains(xt, yt);
+				String xy = "[" + xt + ", " + yt + "]";
+				assertEquals("impl " + polygon + " contains " + xy, exp, pl.contains(xt, yt));
+			}
+		}
+	}
+	
+	
+	public void testTriangleContains() {
+		String triangle = "4,10; 10,5; 12,14";
+		String pointIn = "9,9; 9,7; 10,11; 11,12; 7,11";
+		String pointOut = "6,6;  10,4; 13,7; 13,15; 10,14; 5,12";
+		verify(triangle, pointIn , true);
+		verify(triangle, pointOut , false);
+		
+		String triangleBack = "4,10; 12,14; 10,5;";
+		verify(triangleBack, pointIn , true);
+		verify(triangleBack, pointOut , false);
+		
+		String triangleBack2 = "12,14; 10,5; 4,10; ";
+		verify(triangleBack2, pointIn , true);
+		verify(triangleBack2, pointOut , false);
+	}
+	
+	public void testComplexContains() {
+		verify("4,10; 10,5; 17,3; 19,6; 14,8; 12,14; 7,12", "", true);
+		verify("4,10; 10,5; 17,3; 19,6; 17,12; 12,14; 7,12", "", true);
+		verify("7,12; 12,14; 17,12; 19,6; 17,3; 10,5; 4,10;", "", true);
+	}
+	
+}

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/java/org/microemu/device/impl/PolygonTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/resources/container-internal.txt
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/resources/container-internal.txt?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/resources/container-internal.txt (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/resources/container-internal.txt Mon May 26 15:20:19 2008
@@ -0,0 +1 @@
+container internal not avalble to app
\ No newline at end of file

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/resources/container-internal.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/resources/strings.txt
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/resources/strings.txt?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/resources/strings.txt (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/resources/strings.txt Mon May 26 15:20:19 2008
@@ -0,0 +1 @@
+internal resources strings
\ No newline at end of file

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/resources/strings.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-javase/src/test/ssl/read-me.txt
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-javase/src/test/ssl/read-me.txt?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-javase/src/test/ssl/read-me.txt (added)
+++ harmony/enhanced/microemulator/microemu-javase/src/test/ssl/read-me.txt Mon May 26 15:20:19 2008
@@ -0,0 +1,29 @@
+This is uses during UnitTests for SSL
+
+ When using SSLFactory to talk SSL with a server, or using the URL class
+to open an https connection we need to make the server certificate be trusted by SSLSocketFactory.
+
+1. You must have the server certificate. If you don't have this
+handy, navigate to the secure website, click on the lock icon
+(in Internet Explorer). Click on "Details" tab and then click
+the "Copy to File..." button. Export the certificate to a DER
+encoded binary X.509 (.CER) file. Let's say you chose the
+filename test-server.cer
+
+ Java 1.4 do not acept key len above the normal 2048 bits.
+
+2. Import the file test-server.cer to our keystore  Create src\test\resources\test-servers.keystore
+
+   keytool -keystore test-servers.keystore -storepass microemu2006 -import -alias test-server.host.net -file test-server.cer -trustcacerts
+
+Done:
+   keytool -printcert -file pyx4j.com-der-X509.cer
+   keytool -keystore ../resources/test-servers.keystore -storepass microemu2006 -import -alias pyx4j.com -file pyx4j.com-der-X509.cer -trustcacerts
+
+# torvspocweb Server used for tests on Windows build server
+    keytool -keystore ../resources/test-servers.keystore -storepass microemu2006 -import -alias torvspocweb -file torvspocweb-der-X509.cer -trustcacerts
+    keytool -keystore ../resources/test-servers.keystore -storepass microemu2006 -delete -alias pyx4j.com
+    keytool -keystore ../resources/test-servers.keystore -storepass microemu2006 -list
+
+3. Unit test will load this keystore automaticaly during build
+

Propchange: harmony/enhanced/microemulator/microemu-javase/src/test/ssl/read-me.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/pom.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/pom.xml?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/pom.xml (added)
+++ harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/pom.xml Mon May 26 15:20:19 2008
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns="http://maven.apache.org/POM/4.0.0">
+    <!-- @version $Revision: 1626 $ ($Author: vlads $) $Date: 2008-03-04 21:47:36 -0500 (Tue, 04 Mar 2008) $ -->
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.microemu</groupId>
+        <artifactId>microemu-tests</artifactId>
+        <version>2.0.3-SNAPSHOT</version><!--me-version-->
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>bytecode-test-app</artifactId>
+    <name>bytecode-test-app</name>
+
+    <description>bytecode-test-app</description>
+
+    <build>
+
+        <plugins>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.4</source>
+                    <target>1.4</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <finalName>bytecode-test-app</finalName>
+                </configuration>
+            </plugin>
+
+        </plugins>
+
+    </build>
+
+</project>
\ No newline at end of file

Propchange: harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/javax/microedition/NotAccessible.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/javax/microedition/NotAccessible.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/javax/microedition/NotAccessible.java (added)
+++ harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/javax/microedition/NotAccessible.java Mon May 26 15:20:19 2008
@@ -0,0 +1,32 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package javax.microedition;
+
+/**
+ * @author vlads
+ *
+ */
+public class NotAccessible {
+
+	public static void doStuff() {
+		throw new RuntimeException("Should not be able to acess this class");
+	}
+	
+}

Propchange: harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/javax/microedition/NotAccessible.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/org/DynamicallyLoadedRunner.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/org/DynamicallyLoadedRunner.java?rev=660326&view=auto
==============================================================================
--- harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/org/DynamicallyLoadedRunner.java (added)
+++ harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/org/DynamicallyLoadedRunner.java Mon May 26 15:20:19 2008
@@ -0,0 +1,32 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org;
+
+/**
+ * @author vlads
+ *
+ */
+public class DynamicallyLoadedRunner implements Runnable {
+
+	public void run() {
+		DynamicallyLoadedStatus.runnerSuccess = true;
+	}
+
+}

Propchange: harmony/enhanced/microemulator/microemu-tests/bytecode-test-app/src/main/java/org/DynamicallyLoadedRunner.java
------------------------------------------------------------------------------
    svn:eol-style = native