/*******************************************************************************
* Copyright (c) 2011-2014 Fernando Petrola
*
* This file is part of Dragome SDK.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
******************************************************************************/
package com.dragome.tests.lambda;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import junit.framework.TestCase;
import com.dragome.commons.compiler.annotations.CompilerType;
import com.dragome.commons.compiler.annotations.DragomeCompilerSettings;
public class StreamTests extends TestCase
{
// protected int b= 1;
//
// public static void main(String[] args)
// {
// StreamTests streamTests= new StreamTests();
// // streamTests.testM3();
// }
//
// @DragomeCompilerSettings(CompilerType.Strict)
// private void m1()
// {
// // IntStream.iterate(0, i -> i + 2).limit(100).forEach(System.out::println);
// //
// List<String> languages= Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp", "Jsp", "Jasper");
// // String a= "";
// //
// Predicate<String> startsWithJ= n -> n.startsWith("J");
// Predicate<String> fourLetterLong= n -> n.length() > 3;
// Stream<String> stream= languages.stream();
// stream= getStream(languages);
// stream.filter(startsWithJ.and(fourLetterLong)).map(s -> s.toLowerCase() + s.toUpperCase()).forEach((n) -> System.out.println("Name, which starts with 'J' and four letter long is : " + n));
// }
//
// private void m2()
// {
// Predicate<String> startsWithJ= n -> n.startsWith("J");
// Predicate<String> fourLetterLong= n -> n.length() > 3;
// Predicate<String> combined= startsWithJ.and(fourLetterLong);
// boolean test= combined.test("Java");
// System.out.println(test);
// }
//
// private <T> Stream<T> getStream(List<T> languages)
// {
// return new StreamImpl<T, T>(languages);
// }
//
// private void m2(int a1, Integer b, boolean c)
// {
// Supplier<Collection<?>> a= ArrayList::new;
//
// Supplier[] collectionFactories= { ArrayList::new, HashSet::new, HashMap::new };
// Collection object= (Collection) collectionFactories[2].get();
// }
// private void testM3()
// {
// IntStream.range(0, 100).parallel().filter(i -> i % 2 == 0).forEach(System.out::println);
// }
@DragomeCompilerSettings(CompilerType.Strict)
public void testStaticMethod()
{
Stream.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9).filter(i -> i % 2 == 0).forEach((i) -> System.out.println(i));
}
}