// Path: easyfxml/src/main/java/moe/tristan/easyfxml/EasyFxml.java
// public interface EasyFxml {
// 
//     /**
//      * Loads a {@link FxmlComponent} as a Pane (this is the safest base class for all sorts of hierarchies) since most of the base containers are subclasses of
//      * it.
//      * <p>
//      * It also registers its controller in the {@link ControllerManager} for later usage.
//      * <p>
//      * It returns a {@link Try} which is a monadic structure which allows us to do clean exception-handling.
//      *
//      * @param component The element's {@link FxmlComponent} counterpart.
//      *
//      * @return A {@link Try} containing either the JavaFX {@link Pane} inside a {@link Try.Success} or the exception that was raised during the chain of calls
//      * needed to load it, inside a {@link Try.Failure}. See {@link Try#getOrElse(Object)}, {@link Try#onFailure(Consumer)}, {@link Try#recover(Function)} and
//      * related methods for how to handle {@link Try.Failure}.
//      */
//     FxmlLoadResult<Pane, FxmlController> load(final FxmlComponent component);
// 
//     /**
//      * Same as {@link #load(FxmlComponent)} but offers a selector parameter for multistage usage of {@link ControllerManager}.
//      *
//      * @param component The element's {@link FxmlComponent} counterpart.
//      * @param selector  The selector for deduplication of Panes sharing the same {@link FxmlComponent}.
//      *
//      * @return A Try of the {@link Pane} to be loaded. See {@link #load(FxmlComponent)} for more information on {@link Try}.
//      */
//     FxmlLoadResult<Pane, FxmlController> load(final FxmlComponent component, final Selector selector);
// 
//     /**
//      * Same as {@link #load(FxmlComponent)} except you can choose the return type wished for instead of just {@link Pane}.
//      * <p>
//      * It's a bad idea but it can sometimes be actually useful on the rare case where the element is really nothing like a Pane. Be it a very complex button or
//      * a custom textfield with non-rectangular shape.
//      *
//      * @param component       The element's {@link FxmlComponent} counterpart.
//      * @param nodeClass       The class of the JavaFX {@link Node} represented by this {@link FxmlComponent}.
//      * @param controllerClass The class of the {@link FxmlController} managing this {@link FxmlComponent}.
//      * @param <NODE>          The type of the node. Mostly for type safety.
//      * @param <CONTROLLER>    The type of the controller. Mostly for type safety.
//      *
//      * @return A {@link FxmlLoadResult} containing two {@link Try} instances. One for the node itself and one for its controller. This allows for granular load
//      * error management.
//      */
//     <NODE extends Node, CONTROLLER extends FxmlController>
//     FxmlLoadResult<NODE, CONTROLLER>
//     load(
//         final FxmlComponent component,
//         final Class<? extends NODE> nodeClass,
//         final Class<? extends CONTROLLER> controllerClass
//     );
// 
//     /**
//      * This is to {@link #load(FxmlComponent, Class, Class)} just what {@link #load(FxmlComponent, Selector)} is to {@link #load(FxmlComponent)}.
//      *
//      * @param component       The element's {@link FxmlComponent} counterpart.
//      * @param nodeClass       The class of the JavaFX {@link Node} represented by this {@link FxmlComponent}.
//      * @param controllerClass The class of the {@link FxmlController} managing this {@link FxmlComponent}.
//      * @param selector        The selector for deduplication of Panes sharing the same {@link FxmlComponent}.
//      * @param <NODE>          The type of the node. Mostly for type safety.
//      * @param <CONTROLLER>    The type of the controller. Mostly for type safety.
//      *
//      * @return A {@link FxmlLoadResult} containing two {@link Try} instances.
//      *
//      * One for the node itself and one for its controller. This allows for granular load error management.
//      */
//     <NODE extends Node, CONTROLLER extends FxmlController>
//     FxmlLoadResult<NODE, CONTROLLER>
//     load(
//         final FxmlComponent component,
//         final Class<? extends NODE> nodeClass,
//         final Class<? extends CONTROLLER> controllerClass,
//         final Selector selector
//     );
// 
// }


import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import moe.tristan.easyfxml.EasyFxml;
/*
 * Copyright 2017 - 2019 EasyFXML project and contributors
 *
 *    Licensed 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 moe.tristan.easyfxml.samples.form.user;




@SpringBootTest
public class UserFormContextTest {

    @Autowired
// Path: easyfxml/src/main/java/moe/tristan/easyfxml/EasyFxml.java
// public interface EasyFxml {
// 
//     /**
//      * Loads a {@link FxmlComponent} as a Pane (this is the safest base class for all sorts of hierarchies) since most of the base containers are subclasses of
//      * it.
//      * <p>
//      * It also registers its controller in the {@link ControllerManager} for later usage.
//      * <p>
//      * It returns a {@link Try} which is a monadic structure which allows us to do clean exception-handling.
//      *
//      * @param component The element's {@link FxmlComponent} counterpart.
//      *
//      * @return A {@link Try} containing either the JavaFX {@link Pane} inside a {@link Try.Success} or the exception that was raised during the chain of calls
//      * needed to load it, inside a {@link Try.Failure}. See {@link Try#getOrElse(Object)}, {@link Try#onFailure(Consumer)}, {@link Try#recover(Function)} and
//      * related methods for how to handle {@link Try.Failure}.
//      */
//     FxmlLoadResult<Pane, FxmlController> load(final FxmlComponent component);
// 
//     /**
//      * Same as {@link #load(FxmlComponent)} but offers a selector parameter for multistage usage of {@link ControllerManager}.
//      *
//      * @param component The element's {@link FxmlComponent} counterpart.
//      * @param selector  The selector for deduplication of Panes sharing the same {@link FxmlComponent}.
//      *
//      * @return A Try of the {@link Pane} to be loaded. See {@link #load(FxmlComponent)} for more information on {@link Try}.
//      */
//     FxmlLoadResult<Pane, FxmlController> load(final FxmlComponent component, final Selector selector);
// 
//     /**
//      * Same as {@link #load(FxmlComponent)} except you can choose the return type wished for instead of just {@link Pane}.
//      * <p>
//      * It's a bad idea but it can sometimes be actually useful on the rare case where the element is really nothing like a Pane. Be it a very complex button or
//      * a custom textfield with non-rectangular shape.
//      *
//      * @param component       The element's {@link FxmlComponent} counterpart.
//      * @param nodeClass       The class of the JavaFX {@link Node} represented by this {@link FxmlComponent}.
//      * @param controllerClass The class of the {@link FxmlController} managing this {@link FxmlComponent}.
//      * @param <NODE>          The type of the node. Mostly for type safety.
//      * @param <CONTROLLER>    The type of the controller. Mostly for type safety.
//      *
//      * @return A {@link FxmlLoadResult} containing two {@link Try} instances. One for the node itself and one for its controller. This allows for granular load
//      * error management.
//      */
//     <NODE extends Node, CONTROLLER extends FxmlController>
//     FxmlLoadResult<NODE, CONTROLLER>
//     load(
//         final FxmlComponent component,
//         final Class<? extends NODE> nodeClass,
//         final Class<? extends CONTROLLER> controllerClass
//     );
// 
//     /**
//      * This is to {@link #load(FxmlComponent, Class, Class)} just what {@link #load(FxmlComponent, Selector)} is to {@link #load(FxmlComponent)}.
//      *
//      * @param component       The element's {@link FxmlComponent} counterpart.
//      * @param nodeClass       The class of the JavaFX {@link Node} represented by this {@link FxmlComponent}.
//      * @param controllerClass The class of the {@link FxmlController} managing this {@link FxmlComponent}.
//      * @param selector        The selector for deduplication of Panes sharing the same {@link FxmlComponent}.
//      * @param <NODE>          The type of the node. Mostly for type safety.
//      * @param <CONTROLLER>    The type of the controller. Mostly for type safety.
//      *
//      * @return A {@link FxmlLoadResult} containing two {@link Try} instances.
//      *
//      * One for the node itself and one for its controller. This allows for granular load error management.
//      */
//     <NODE extends Node, CONTROLLER extends FxmlController>
//     FxmlLoadResult<NODE, CONTROLLER>
//     load(
//         final FxmlComponent component,
//         final Class<? extends NODE> nodeClass,
//         final Class<? extends CONTROLLER> controllerClass,
//         final Selector selector
//     );
// 
// }


// Path: easyfxml-samples/easyfxml-sample-form-user/src/test/java/moe/tristan/easyfxml/samples/form/user/UserFormContextTest.java
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import moe.tristan.easyfxml.EasyFxml;

/*
 * Copyright 2017 - 2019 EasyFXML project and contributors
 *
 *    Licensed 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 moe.tristan.easyfxml.samples.form.user;




@SpringBootTest
public class UserFormContextTest {

    @Autowired
    private EasyFxml easyFxml;