context/src/test/java/net/java/html/BrwsrCtxTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Thu, 04 Dec 2014 09:21:55 +0100
changeset 886 88d62267a0b5
parent 838 bdc3d696dd4a
permissions -rw-r--r--
#248918: Introducing technology identifiers
jtulach@569
     1
/**
jtulach@569
     2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
jtulach@569
     3
 *
jtulach@569
     4
 * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
jtulach@569
     5
 *
jtulach@569
     6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
jtulach@569
     7
 * Other names may be trademarks of their respective owners.
jtulach@569
     8
 *
jtulach@569
     9
 * The contents of this file are subject to the terms of either the GNU
jtulach@569
    10
 * General Public License Version 2 only ("GPL") or the Common
jtulach@569
    11
 * Development and Distribution License("CDDL") (collectively, the
jtulach@569
    12
 * "License"). You may not use this file except in compliance with the
jtulach@569
    13
 * License. You can obtain a copy of the License at
jtulach@569
    14
 * http://www.netbeans.org/cddl-gplv2.html
jtulach@569
    15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
jtulach@569
    16
 * specific language governing permissions and limitations under the
jtulach@569
    17
 * License.  When distributing the software, include this License Header
jtulach@569
    18
 * Notice in each file and include the License file at
jtulach@569
    19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
jtulach@569
    20
 * particular file as subject to the "Classpath" exception as provided
jtulach@569
    21
 * by Oracle in the GPL Version 2 section of the License file that
jtulach@569
    22
 * accompanied this code. If applicable, add the following below the
jtulach@569
    23
 * License Header, with the fields enclosed by brackets [] replaced by
jtulach@569
    24
 * your own identifying information:
jtulach@569
    25
 * "Portions Copyrighted [year] [name of copyright owner]"
jtulach@569
    26
 *
jtulach@569
    27
 * Contributor(s):
jtulach@569
    28
 *
jtulach@569
    29
 * The Original Software is NetBeans. The Initial Developer of the Original
jtulach@569
    30
 * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
jtulach@569
    31
 *
jtulach@569
    32
 * If you wish your version of this file to be governed by only the CDDL
jtulach@569
    33
 * or only the GPL Version 2, indicate your decision by adding
jtulach@569
    34
 * "[Contributor] elects to include this software in this distribution
jtulach@569
    35
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
jtulach@569
    36
 * single choice of license, a recipient has the option to distribute
jtulach@569
    37
 * your version of this file under either the CDDL, the GPL Version 2 or
jtulach@569
    38
 * to extend the choice of license to its licensees as provided above.
jtulach@569
    39
 * However, if you add GPL Version 2 code and therefore, elected the GPL
jtulach@569
    40
 * Version 2 license, then the option applies only if the new code is
jtulach@569
    41
 * made subject to such option by the copyright holder.
jtulach@569
    42
 */
jtulach@569
    43
package net.java.html;
jtulach@569
    44
jtulach@838
    45
import org.netbeans.html.context.spi.Contexts;
jtulach@569
    46
import static org.testng.Assert.*;
jtulach@886
    47
import org.testng.annotations.Test;
jtulach@569
    48
jtulach@569
    49
/**
jtulach@569
    50
 *
jtulach@790
    51
 * @author Jaroslav Tulach
jtulach@569
    52
 */
jtulach@569
    53
public class BrwsrCtxTest {
jtulach@569
    54
    
jtulach@569
    55
    public BrwsrCtxTest() {
jtulach@569
    56
    }
jtulach@569
    57
jtulach@569
    58
jtulach@569
    59
    @org.testng.annotations.Test
jtulach@569
    60
    public void canSetAssociateCtx() {
jtulach@569
    61
        final BrwsrCtx ctx = Contexts.newBuilder().build();
jtulach@569
    62
        final boolean[] arr = { false };
jtulach@569
    63
        
jtulach@569
    64
        assertNotSame(BrwsrCtx.findDefault(BrwsrCtxTest.class), ctx, "Not associated yet");
jtulach@569
    65
        ctx.execute(new Runnable() {
jtulach@569
    66
            @Override public void run() {
jtulach@569
    67
                assertSame(BrwsrCtx.findDefault(BrwsrCtxTest.class), ctx, "Once same");
jtulach@569
    68
                assertSame(BrwsrCtx.findDefault(BrwsrCtxTest.class), ctx, "2nd same");
jtulach@569
    69
                arr[0] = true;
jtulach@569
    70
            }
jtulach@569
    71
        });
jtulach@569
    72
        assertNotSame(BrwsrCtx.findDefault(BrwsrCtxTest.class), ctx, "Not associated again");
jtulach@569
    73
        assertTrue(arr[0], "Runnable was executed");
jtulach@569
    74
    }
jtulach@569
    75
    
jtulach@886
    76
    
jtulach@886
    77
    @Test public void defaultOrderOfRegistrations() {
jtulach@886
    78
        BrwsrCtx ctx = registerRs(Contexts.newBuilder());
jtulach@886
    79
        Class<? extends Runnable> clazz = Contexts.find(ctx, Runnable.class).getClass();
jtulach@886
    80
        assertEquals(clazz, R1.class, "R1 is registered at value 10");
jtulach@886
    81
    }
jtulach@886
    82
    
jtulach@886
    83
    @Test public void preferOne() {
jtulach@886
    84
        BrwsrCtx ctx = registerRs(Contexts.newBuilder("one"));
jtulach@886
    85
        Class<? extends Runnable> clazz = Contexts.find(ctx, Runnable.class).getClass();
jtulach@886
    86
        assertEquals(clazz, R1.class, "R1 is registered at value 10");
jtulach@886
    87
    }
jtulach@886
    88
jtulach@886
    89
    @Test public void preferTwo() {
jtulach@886
    90
        BrwsrCtx ctx = registerRs(Contexts.newBuilder("two"));
jtulach@886
    91
        Class<? extends Runnable> clazz = Contexts.find(ctx, Runnable.class).getClass();
jtulach@886
    92
        assertEquals(clazz, R2.class, "R2 is preferred");
jtulach@886
    93
    }
jtulach@886
    94
jtulach@886
    95
    @Test public void preferBoth() {
jtulach@886
    96
        BrwsrCtx ctx = registerRs(Contexts.newBuilder("one", "two"));
jtulach@886
    97
        Class<? extends Runnable> clazz = Contexts.find(ctx, Runnable.class).getClass();
jtulach@886
    98
        assertEquals(clazz, R1.class, "R1 is registered at value 10");
jtulach@886
    99
    }
jtulach@886
   100
    
jtulach@886
   101
    private static BrwsrCtx registerRs(Contexts.Builder b) {
jtulach@886
   102
        b.register(Runnable.class, new R1(), 10);
jtulach@886
   103
        b.register(Runnable.class, new R2(), 20);
jtulach@886
   104
        return b.build();
jtulach@886
   105
    }
jtulach@886
   106
jtulach@886
   107
    @Contexts.Id("one")
jtulach@886
   108
    static final class R1 implements Runnable {
jtulach@886
   109
        @Override
jtulach@886
   110
        public void run() {
jtulach@886
   111
        }
jtulach@886
   112
    }
jtulach@886
   113
    @Contexts.Id("two")
jtulach@886
   114
    static final class R2 implements Runnable {
jtulach@886
   115
        @Override
jtulach@886
   116
        public void run() {
jtulach@886
   117
        }
jtulach@886
   118
    }
jtulach@886
   119
    
jtulach@569
   120
}