/*
* Copyright (c) 2014 Brocade Communications Systems, Inc. and others.  All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.controller.sample.toaster.provider;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;

import java.util.concurrent.Future;

import org.junit.Ignore;
import org.junit.Test;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.binding.test.AbstractDataBrokerTest;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.DisplayString;
import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.MakeToastInput;
import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.MakeToastInputBuilder;
import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.Toaster;
import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.WheatBread;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcResult;

import com.google.common.base.Optional;

public class OpenDaylightToasterTest extends AbstractDataBrokerTest{

    private static InstanceIdentifier<Toaster> TOASTER_IID =
                        InstanceIdentifier.builder( Toaster.class ).build();
    OpendaylightToaster toaster;

    @Override
    protected void setupWithDataBroker(DataBroker dataBroker) {
        toaster = new OpendaylightToaster();
        toaster.setDataProvider( dataBroker );

        /**
         * Doesn't look like we have support for the NotificationProviderService yet, so mock it
         * for now.
         */
        NotificationProviderService mockNotification = mock( NotificationProviderService.class );
        toaster.setNotificationProvider( mockNotification );
    }

    @Test
    public void testToasterInitOnStartUp() throws Exception {
        DataBroker broker = getDataBroker();

        ReadOnlyTransaction rTx = broker.newReadOnlyTransaction();
        Optional<Toaster> optional = rTx.read( LogicalDatastoreType.OPERATIONAL, TOASTER_IID ).get();
        assertNotNull( optional );
        assertTrue( "Operational toaster not present", optional.isPresent() );

        Toaster toaster = optional.get();

        assertEquals( Toaster.ToasterStatus.Up, toaster.getToasterStatus() );
        assertEquals( new DisplayString("Opendaylight"),
                      toaster.getToasterManufacturer() );
        assertEquals( new DisplayString("Model 1 - Binding Aware"),
                      toaster.getToasterModelNumber() );

        Optional<Toaster> configToaster =
                            rTx.read( LogicalDatastoreType.CONFIGURATION, TOASTER_IID ).get();
        assertFalse( "Didn't expect config data for toaster.",
                     configToaster.isPresent() );
    }

    @Test
    @Ignore //ignored because it is not an e test right now. Illustrative purposes only.
    public void testSomething() throws Exception{
        MakeToastInput toastInput = new MakeToastInputBuilder()
                                        .setToasterDoneness( 1L )
                                        .setToasterToastType( WheatBread.class )
                                        .build();

        //NOTE: In a real test we would want to override the Thread.sleep() to prevent our junit test
        //for sleeping for a second...
        Future<RpcResult<Void>> makeToast = toaster.makeToast( toastInput );

        RpcResult<Void> rpcResult = makeToast.get();

        assertNotNull( rpcResult );
        assertTrue( rpcResult.isSuccessful() );
         //etc
    }

}

@@ -1,11 +1,12 @@
 /*%0A
+ 
 * Copyri
@@ -89,18 +89,20 @@
 served.%0A
+ 
 *%0A
+ 
 * This p
@@ -168,16 +168,17 @@
 der the%0A
+ 
 * terms 
@@ -249,16 +249,17 @@
 bution,%0A
+ 
 * and is
@@ -314,19 +314,21 @@
 10.html%0A
+ 
 */%0A
+%0A
 package 

Fix license header violations in toaster-provider