# Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) my $ok = 0; BEGIN { $| = 1; print "1..33\n"; } END {print "not ok $ok - is JavaServer on localhost running?\nHave you ran 'java_server_install.pl' yet?\nJavaServer must be running for these tests to function.\n" unless $loaded;} BEGIN { print "WARNING: You cannot run these tests unless JavaServer is running!\n"; print "Do you want to continue? (Y/n) "; my $in = ; exit 1 if ($in =~ /^n/i); } use lib '.'; use Java; my $java = new Java(); $loaded = 1; $ok++; print "ok $ok\n"; ######################### End of black magic. # Insert your test code below (better if it prints "ok 13" # (correspondingly "not ok 13") depending on the success of chunk 13 # of the test code): # If you 'use strict' you gotta use 'no strict 'subs'' 'cuz all the # function calls are AUTOLOADED... #no strict 'subs'; print "Create array.\n"; my $array = $java->create_array("java.lang.String",5); $ok++; print "ok $ok\n"; print "Set array field.\n"; $array->[3] = "Mark Rulez"; $ok++; print "ok $ok\n"; print "Get length.\n"; my $len = $@{$array}; $ok++; print "ok $ok\n"; print "Get value.\n"; my $vv = $array->[3]->get_value; $ok++; print "ok $ok\n"; #print "ARRAY: $vv $len\n"; # $array->set_value(0,$constructor); # $my vv = $array->get_value(3); print "Dynamic Class Loading.\n"; my $class = $java->java_lang_Class("forName","com.zzo.javaserver.Test"); #my $class = $java->static_call("java.lang.Class","forName","Test"); $ok++; print "ok $ok\n"; print "Get array from reflection.\n"; my $constructor_array = $class->getConstructors(); $ok++; print "ok $ok\n"; print "Cycle thru array values.\n"; for (my $i = 0; $i < $#{$constructor_array}; $i++) { my $cons = $constructor_array->[$i]; my $val = $cons->get_value(); print "Constructor $i: $val\n"; } $ok++; print "ok $ok\n"; # # array syntax for JavaServer # don't worry about this! just showin' ya what these Perl # calls get mapped to... # NEW [Ljava.lang.reflect.Constructor;(5 (,34,2,3,2)) # GET [Ljava.lang.reflect.Constructor;^3#2 # SET [Ljava.lang.reflect.Constructor;^3#() # GET [Ljava.lang.reflect.Constructor;^3#len == get length print "New instance of dynamically loaded class.\n"; my $test_obj = $class->newInstance(); $ok++; print "ok $ok\n"; print "Method call on dynamically instantiated class.\n"; my $val = $test_obj->get->get_value; $ok++; print "ok $ok\n"; print "Static get field all in one line.\n"; my $str = $java->get_field("java.util.Locale","CHINESE")->getDisplayName->get_value; print "Chinese Locale: $str\n"; $ok++; print "ok $ok\n"; my $windows = 2; print "GUI and Events.\n"; print "Create frame.\n"; $ok++; print "ok $ok\n"; my $frame = $java->create_object("java.awt.Frame","Frame #1"); print "Set size.\n"; $frame->setSize(200,200); $ok++; print "ok $ok\n"; print "Show.\n"; $frame->show(); $ok++; print "ok $ok\n"; print "Frame1 is $frame->{name}\n"; print "Set up Window Events.\n"; $java->do_event($frame,"addWindowListener",\&event); $ok++; print "ok $ok\n"; print "Add a dialog box\n"; my $dialog = $java->create_object("java.awt.Dialog",$frame,"Dialog Box","true:b"); $ok++; print "ok $ok\n"; print "Set dialog box size.\n"; $dialog->setSize(400,400); $ok++; print "ok $ok\n"; print "Show dialog.\n"; #$dialog->show(); $ok++; print "ok $ok\n"; print "Set up Window Events for dialog.\n"; $java->do_event($dialog,"addWindowListener",\&event); $ok++; print "ok $ok\n"; print "Second frame.\n"; my $frame2 = $java->create_object("java.awt.Frame","Frame #2"); $ok++; print "ok $ok\n"; print "Set size.\n"; $frame2->setSize(200,200); $ok++; print "ok $ok\n"; print "Show second frame.\n"; $frame2->show(); $ok++; print "ok $ok\n"; print "Set up events on second frame.\n"; $java->do_event($frame2,"addWindowListener",\&event); $ok++; print "ok $ok\n"; print "Enter event loop.\n"; while(1) { my $b = $java->go; last if (!defined $b); last if ($windows <= 0); } $ok++; print "ok $ok\n"; sub event { my($object,$event) = @_; # Used to discern what window event happened my $val = $event->getID->get_value; print "Got event $event on $object\n"; if ($object->same($frame)) { print "Event on Frame 1: "; } elsif ($object->same($dialog)) { print "Event on Dialog box: "; } else { print "Event on Frame 2: "; } if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_ACTIVATED")->get_value) { print "Window Activated\n"; } if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_CLOSED")->get_value) { print "Window Closed\n"; } if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_CLOSING")->get_value) { print "Window Closing\n"; # if ya close the first frame it'll take the dialog box # down with it... $object->dispose; $windows-- if (!$object->same($dialog)); undef $object; } if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_DEACTIVATED")->get_value) { print "Window Deactivated\n"; } if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_DEICONIFIED")->get_value) { print "Window Deiconified\n"; } if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_ICONIFIED")->get_value) { print "Window Iconified\n"; } if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_OPENED")->get_value) { print "Window Opened\n"; } } #okay this is a weird one print "Server socket test - this is a weird one!\n"; print "You type in below what port you want a echo server to start listening\n"; print "on & I'm gonna tell the JavaServer to start listening on port in.\n"; print "You telnet to the port on localhost in another window & it'll\n"; print "echo each line you type.\n"; print "Type 'bye' when finished...\n"; #print "First off - do you want to run this test? If you've got this far\n"; #print "most likely you're okay.... (y/N)? "; #my $in = ; #exit 1 if ($in !~ /^y/i); print "What port should the echo server listen on (8000 is the default)? "; my $port = ; chomp $port; $port = 8000 if ($port =~ /\D/ || !$port); print "Creating server socket on port $port.\n"; my $ssocket = $java->create_object("java.net.ServerSocket",$port); $ok++; print "ok $ok\n"; print "Accepting connexions.\n"; my $client = $ssocket->accept; $ok++; print "ok $ok\n"; print "Got a connexion!\n"; print "Getting InputStream.\n"; my $is = $client->getInputStream; $ok++; print "ok $ok\n"; print "Getting OutputStream.\n"; my $os = $client->getOutputStream; $ok++; print "ok $ok\n"; print "Creating InputStreamReader.\n"; my $isr = $java->create_object("java.io.InputStreamReader",$is); $ok++; print "ok $ok\n"; print "Creating OutputStreamWriter.\n"; my $osw = $java->create_object("java.io.OutputStreamWriter",$os); $ok++; print "ok $ok\n"; print "Creating BufferedReader.\n"; my $buffered_reader = $java->create_object("java.io.BufferedReader",$isr); $ok++; print "ok $ok\n"; print "Creating PrintWriter.\n"; my $print_writer = $java->create_object("java.io.PrintWriter",$osw,"true:b"); $ok++; print "ok $ok\n"; my $cont = 1; print "Entering input loop.\n"; while($cont) { print "Waiting to get a line.\n"; my $input_line = $buffered_reader->readLine; last if (!$input_line); $input_line = $input_line->get_value; chomp $input_line; print "Received: $input_line\n"; print "Sending echo to client.\n"; $print_writer->println("You typed - $input_line"); if ($print_writer->checkError->get_value eq 'true') { print "ERR: true!\n"; } $cont = 0 if ($input_line =~ /^bye/i); } $ok++; print "ok $ok\n"; ### # Swing tests! ### print "Now go into the examples/swing directory if you want to run Swing tests...\n";