geo/src/test/java/net/java/html/geo/OnLocationTest.java
author Jaroslav Tulach <jaroslav.tulach@netbeans.org>
Fri, 07 Feb 2014 07:44:34 +0100
changeset 551 7ca2253fa86d
parent 365 5c93ad8c7a15
child 842 ebb2428bb7e1
permissions -rw-r--r--
Updating copyright headers to mention current year
     1 /**
     2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     3  *
     4  * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
     5  *
     6  * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
     7  * Other names may be trademarks of their respective owners.
     8  *
     9  * The contents of this file are subject to the terms of either the GNU
    10  * General Public License Version 2 only ("GPL") or the Common
    11  * Development and Distribution License("CDDL") (collectively, the
    12  * "License"). You may not use this file except in compliance with the
    13  * License. You can obtain a copy of the License at
    14  * http://www.netbeans.org/cddl-gplv2.html
    15  * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    16  * specific language governing permissions and limitations under the
    17  * License.  When distributing the software, include this License Header
    18  * Notice in each file and include the License file at
    19  * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    20  * particular file as subject to the "Classpath" exception as provided
    21  * by Oracle in the GPL Version 2 section of the License file that
    22  * accompanied this code. If applicable, add the following below the
    23  * License Header, with the fields enclosed by brackets [] replaced by
    24  * your own identifying information:
    25  * "Portions Copyrighted [year] [name of copyright owner]"
    26  *
    27  * Contributor(s):
    28  *
    29  * The Original Software is NetBeans. The Initial Developer of the Original
    30  * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
    31  *
    32  * If you wish your version of this file to be governed by only the CDDL
    33  * or only the GPL Version 2, indicate your decision by adding
    34  * "[Contributor] elects to include this software in this distribution
    35  * under the [CDDL or GPL Version 2] license." If you do not indicate a
    36  * single choice of license, a recipient has the option to distribute
    37  * your version of this file under either the CDDL, the GPL Version 2 or
    38  * to extend the choice of license to its licensees as provided above.
    39  * However, if you add GPL Version 2 code and therefore, elected the GPL
    40  * Version 2 license, then the option applies only if the new code is
    41  * made subject to such option by the copyright holder.
    42  */
    43 package net.java.html.geo;
    44 
    45 import org.testng.annotations.Test;
    46 import static org.testng.Assert.*;
    47 
    48 /** Testing correctness of the generated code.
    49  */
    50 public class OnLocationTest {
    51     static int cnt;
    52     static @OnLocation void onLocation(Position p) {
    53         assertNotNull(p, "Position object provided");
    54         cnt++;
    55     }
    56 
    57     @Test public void createOneTimeQueryStatic() {
    58         net.java.html.geo.Position.Handle h = OnLocationHandle.createQuery();
    59         h.setHighAccuracy(false);
    60         h.setTimeout(1000L);
    61         h.setMaximumAge(1000L);
    62         if (h.isSupported()) h.start();
    63         h.stop();
    64     }
    65     
    66     @Test public void onLocationHandleCallback() throws Throwable {
    67         net.java.html.geo.Position.Handle h = OnLocationHandle.createQuery();
    68         cnt = 0;
    69         h.onLocation(new Position(null));
    70         assertEquals(cnt, 1, "The callback has been made");
    71     }
    72 
    73     @Test public void createRepeatableWatchStatic() {
    74         net.java.html.geo.Position.Handle h = OnLocationHandle.createQuery();
    75         h.setHighAccuracy(false);
    76         h.setTimeout(1000L);
    77         h.setMaximumAge(1000L);
    78         if (h.isSupported()) h.start();
    79         h.stop();
    80     }
    81 
    82     int instCnt;
    83     Throwable instT;
    84     @OnLocation(onError = "someError") void instance(Position p) throws Error {
    85         assertNotNull(p, "Some position passed in");
    86         instCnt++;
    87     }
    88     void someError(Throwable t) throws Exception {
    89         instT = t;
    90         instCnt++;
    91     }
    92     
    93     @Test public void createOneTimeQueryInstance() {
    94         OnLocationTest t = new OnLocationTest();
    95         
    96         net.java.html.geo.Position.Handle h = InstanceHandle.createQuery(t);
    97         h.setHighAccuracy(false);
    98         h.setTimeout(1000L);
    99         h.setMaximumAge(1000L);
   100         if (h.isSupported()) h.start();
   101         h.stop();
   102     }
   103     
   104     @Test public void onInstanceCallback() throws Throwable {
   105         OnLocationTest t = new OnLocationTest();
   106         net.java.html.geo.Position.Handle h = InstanceHandle.createWatch(t);
   107         h.onLocation(new Position(null));
   108         assertEquals(t.instCnt, 1, "One callback made");
   109     }
   110 
   111     @Test public void onInstanceError() throws Throwable {
   112         net.java.html.geo.Position.Handle h = InstanceHandle.createWatch(this);
   113         InterruptedException e = new InterruptedException();
   114         h.onError(e);
   115         assertEquals(instCnt, 1, "One callback made");
   116         assertEquals(instT, e, "The same exception passed in");
   117     }
   118 
   119     @Test public void createRepeatableWatch() {
   120         OnLocationTest t = new OnLocationTest();
   121         
   122         net.java.html.geo.Position.Handle h = InstanceHandle.createWatch(t);
   123         h.setHighAccuracy(false);
   124         h.setTimeout(1000L);
   125         h.setMaximumAge(1000L);
   126         if (h.isSupported()) h.start();
   127         h.stop();
   128     }
   129     
   130     @OnLocation(onError = "errParam") void withParam(Position pos, int param) {
   131         instCnt = param;
   132     }
   133     
   134     void errParam(Exception ex, int param) {
   135         instCnt = param;
   136     }
   137 }