Skip to content

Commit

Permalink
Add primitive Stack factories in API. Closes #1207.
Browse files Browse the repository at this point in the history
Signed-off-by: Rinat Gatyatullin <rinattalgatovich.gatyatullin@bnymellon.com>
  • Loading branch information
Rinat Gatyatullin committed Mar 4, 2022
1 parent 3163e7b commit f9000bc
Show file tree
Hide file tree
Showing 7 changed files with 122 additions and 5 deletions.
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2022 Goldman Sachs and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v. 1.0 which accompany this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*/

/**
* This package contains factory API for creating primitive stack instances.
*/
package org.eclipse.collections.api.factory.stack.primitive;
@@ -0,0 +1,40 @@
import "copyrightAndOthers.stg"

targetPath() ::= "org/eclipse/collections/api/factory/primitive"

fileName(primitive) ::= "<primitive.name>Stacks"

class(primitive) ::= <<
<body(primitive.type, primitive.name)>
>>

body(type, name) ::= <<
<copyrightAndOthers()>

package org.eclipse.collections.api.factory.primitive;

import org.eclipse.collections.api.factory.ServiceLoaderUtils;
import org.eclipse.collections.api.factory.stack.primitive.Immutable<name>StackFactory;
import org.eclipse.collections.api.factory.stack.primitive.Mutable<name>StackFactory;

/**
* <name>Stacks is a static utility for creating {@link Immutable<name>StackFactory} and {@link Mutable<name>StackFactory}.
* This file was automatically generated from template file primitiveStacksAPI.stg.
*
* @since 11.1.
*/
@SuppressWarnings("ConstantNamingConvention")
public final class <name>Stacks
{
public static final Immutable<name>StackFactory immutable =
ServiceLoaderUtils.loadServiceClass(Immutable<name>StackFactory.class);
public static final Mutable<name>StackFactory mutable =
ServiceLoaderUtils.loadServiceClass(Mutable<name>StackFactory.class);

private <name>Stacks()
{
throw new AssertionError("Suppress default constructor for noninstantiability");
}
}

>>
Expand Up @@ -25,9 +25,9 @@ import org.eclipse.collections.impl.factory.primitive.<name>Stacks;
*
* @since 4.0.
*/
public enum Immutable<name>StackFactoryImpl implements Immutable<name>StackFactory
public class Immutable<name>StackFactoryImpl implements Immutable<name>StackFactory
{
INSTANCE;
public static final Immutable<name>StackFactory INSTANCE = new Immutable<name>StackFactoryImpl();

@Override
public Immutable<name>Stack empty()
Expand Down
Expand Up @@ -26,9 +26,9 @@ import org.eclipse.collections.impl.utility.Iterate;
*
* @since 6.0.
*/
public enum Mutable<name>StackFactoryImpl implements Mutable<name>StackFactory
public class Mutable<name>StackFactoryImpl implements Mutable<name>StackFactory
{
INSTANCE;
public static final Mutable<name>StackFactory INSTANCE = new Mutable<name>StackFactoryImpl();

@Override
public Mutable<name>Stack empty()
Expand Down
@@ -0,0 +1,11 @@
targetPath() ::= ""

fileName(primitive) ::= "org.eclipse.collections.api.factory.stack.primitive.Immutable<primitive.name>StackFactory"

class(primitive) ::= <<
<body(primitive.type, primitive.name, primitive.wrapperName)>
>>

body(type, name, wrapperName) ::= <<
org.eclipse.collections.impl.stack.immutable.primitive.Immutable<primitive.name>StackFactoryImpl
>>
@@ -0,0 +1,11 @@
targetPath() ::= ""

fileName(primitive) ::= "org.eclipse.collections.api.factory.stack.primitive.Mutable<primitive.name>StackFactory"

class(primitive) ::= <<
<body(primitive.type, primitive.name, primitive.wrapperName)>
>>

body(type, name, wrapperName) ::= <<
org.eclipse.collections.impl.stack.mutable.primitive.Mutable<primitive.name>StackFactoryImpl
>>
Expand Up @@ -18,6 +18,7 @@ body(type, wrapperName, name) ::= <<
package org.eclipse.collections.impl.factory.primitive;

import org.eclipse.collections.api.factory.stack.primitive.Immutable<name>StackFactory;
import org.eclipse.collections.api.factory.stack.primitive.Mutable<name>StackFactory;
import org.eclipse.collections.api.stack.primitive.Immutable<name>Stack;
import org.eclipse.collections.api.stack.primitive.Mutable<name>Stack;
import org.eclipse.collections.impl.stack.mutable.primitive.<name>ArrayStack;
Expand All @@ -35,7 +36,12 @@ public class <name>StacksTest
@Test
public void immutables()
{
Immutable<name>StackFactory stackFactory = <name>Stacks.immutable;
this.assertImmutableStackFactory(<name>Stacks.immutable);
this.assertImmutableStackFactory(org.eclipse.collections.api.factory.primitive.<name>Stacks.immutable);
}

private void assertImmutableStackFactory(Immutable<name>StackFactory stackFactory)
{
Assert.assertEquals(<name>ArrayStack.newStackWith(), stackFactory.of());
Verify.assertInstanceOf(Immutable<name>Stack.class, stackFactory.of());
Assert.assertEquals(<name>ArrayStack.newStackWith(<(literal.(type))("1")>), stackFactory.of(<(literal.(type))("1")>));
Expand All @@ -62,6 +68,41 @@ public class <name>StacksTest
Verify.assertInstanceOf(Immutable<name>Stack.class, stackFactory.ofAll(<name>ArrayStack.newStackWith(<["1", "2", "3"]:(literal.(type))(); separator=", ">)));
}

@Test
public void mutables()
{
this.assertMutableStackFactory(<name>Stacks.mutable);
this.assertMutableStackFactory(org.eclipse.collections.api.factory.primitive.<name>Stacks.mutable);
}

private void assertMutableStackFactory(Mutable<name>StackFactory stackFactory)
{
Assert.assertEquals(<name>ArrayStack.newStackWith(), stackFactory.of());
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of());
Assert.assertEquals(<name>ArrayStack.newStackWith(<(literal.(type))("1")>), stackFactory.of(<(literal.(type))("1")>));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<(literal.(type))("1")>));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3", "4"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3", "4"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3", "4"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3", "4", "5"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3", "4", "5"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3", "4", "5"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3", "4", "5", "6"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3", "4", "5", "6"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3", "4", "5", "6"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3", "4", "5", "6", "7"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3", "4", "5", "6", "7"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3", "4", "5", "6", "7"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3", "4", "5", "6", "7", "8"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3", "4", "5", "6", "7", "8"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3", "4", "5", "6", "7", "8"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3", "4", "5", "6", "7", "8", "9"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3", "4", "5", "6", "7", "8", "9"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3", "4", "5", "6", "7", "8", "9"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]:(literal.(type))(); separator=", ">), stackFactory.of(<["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]:(literal.(type))(); separator=", ">));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.of(<["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]:(literal.(type))(); separator=", ">));
Assert.assertEquals(<name>ArrayStack.newStackWith(<["3", "2", "1"]:(literal.(type))(); separator=", ">), stackFactory.ofAll(<name>ArrayStack.newStackWith(<["1", "2", "3"]:(literal.(type))(); separator=", ">)));
Verify.assertInstanceOf(Mutable<name>Stack.class, stackFactory.ofAll(<name>ArrayStack.newStackWith(<["1", "2", "3"]:(literal.(type))(); separator=", ">)));
}

@Test
public void empty()
{
Expand Down

0 comments on commit f9000bc

Please sign in to comment.