Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.cyclop.test; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.inject.Named; import org.cyclop.model.ContextCqlCompletion; import org.cyclop.model.CqlColumnName; import org.cyclop.model.CqlIndex; import org.cyclop.model.CqlKeySpace; import org.cyclop.model.CqlKeyword; import org.cyclop.model.CqlPart; import org.cyclop.model.CqlTable; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; /** @author Maciej Miklas */ @Named public class ValidationHelper { public Collection<? extends CqlPart> asHahsCol(Collection<? extends CqlPart> col) { if (col == null) { return null; } return ImmutableSet.copyOf(col); } public void verifyCompletionNotSupported(ContextCqlCompletion completion, String pref) { verifyFullAndMinCompletionTheSame(completion, 1); completion.cqlCompletion.fullCompletion.contains(new CqlPart(pref + "' is not supported yet.....")); } public void verifyContainsAllKeyspacesAndTables(ContextCqlCompletion completion, boolean spaceCqlDemoOrSystem) { int limt = spaceCqlDemoOrSystem ? 5 : 19; verifyFullAndMinCompletionNotTheSame(completion, limt, limt); verifyContainsAllColumns(completion, false); { Collection<? extends CqlPart> mcmp = asHahsCol(completion.cqlCompletion.minCompletion); verifyContainsAllKeyspaces(mcmp, true); verifyContainsNoKeywords(mcmp); verifyContainsTableNamesCqlDemo(mcmp, spaceCqlDemoOrSystem); verifyContainsTableNamesSystem(mcmp, !spaceCqlDemoOrSystem); verifyContainsIndexFromCqlDemo(mcmp, false); verifyContainsTableNamesWithSpaceCqlDemo(mcmp, false); } { Collection<? extends CqlPart> fcmp = asHahsCol(completion.cqlCompletion.fullCompletion); verifyContainsAllKeyspaces(fcmp, true, "."); verifyContainsNoKeywords(fcmp); verifyContainsTableNamesCqlDemo(fcmp, spaceCqlDemoOrSystem); verifyContainsTableNamesSystem(fcmp, !spaceCqlDemoOrSystem); verifyContainsIndexFromCqlDemo(fcmp, false); verifyContainsTableNamesWithSpaceCqlDemo(fcmp, false); } } public void verifyCqldemoSpaceInQuery(ContextCqlCompletion completion) { verifyFullAndMinCompletionNotTheSame(completion, 2, 4); { ImmutableSortedSet<? extends CqlPart> fcmp = completion.cqlCompletion.fullCompletion; verifyContainsAllKeyspaces(fcmp, false); verifyContainsTableNamesCqlDemo(fcmp, true); verifyContainsTableNamesSystem(fcmp, false); verifyContainsTableNamesWithSpaceCqlDemo(fcmp, true); } { ImmutableSortedSet<? extends CqlPart> mcmp = completion.cqlCompletion.minCompletion; verifyContainsAllKeyspaces(mcmp, false); verifyContainsTableNamesCqlDemo(mcmp, true); verifyContainsTableNamesSystem(mcmp, false); verifyContainsTableNamesWithSpaceCqlDemo(mcmp, false); } } public void verifyContainsAllKeyspaces(Collection<? extends CqlPart> col, boolean contains) { verifyContainsAllKeyspaces(col, contains, ""); } public void verifyContainsAllKeyspaces(Collection<? extends CqlPart> col, boolean contains, String postfix) { col = asHahsCol(col); assertNotNull(col); assertEquals(col.toString(), contains, col.contains(new CqlKeySpace("cqldemo" + postfix))); assertEquals(col.toString(), contains, col.contains(new CqlKeySpace("system" + postfix))); } public void verifyContainsAllColumns(ContextCqlCompletion completion, boolean all) { Collection<? extends CqlPart> cmp = asHahsCol(completion.cqlCompletion.fullCompletion); verifyContainsMybooksColumns(cmp, all); verifyContainsSystemColumns(cmp, all); verifyContainsCompoundTestColumns(cmp, all); } public void verifyContainsCompoundTestColumns(Collection<? extends CqlPart> col, boolean contains) { assertNotNull(col); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("id2"))); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("id3"))); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("deesc"))); } public void verifyContainsIndexFromCqlDemo(Collection<? extends CqlPart> col, boolean contains) { col = asHahsCol(col); assertNotNull(col); assertTrue("Size:" + col.size(), col.size() >= 4); assertEquals(col.toString(), contains, col.contains(new CqlIndex("mybooks_publishdate_idx"))); assertEquals(col.toString(), contains, col.contains(new CqlIndex("mybooks_pages_idx"))); assertEquals(col.toString(), contains, col.contains(new CqlIndex("mybooks_genre_idx"))); } public void verifyContainsMybooksColumns(Collection<? extends CqlPart> col, boolean contains, String... prefixes) { col = asHahsCol(col); assertNotNull(col); List<String> columnNamesBasic = new ArrayList<>(); columnNamesBasic.add("title"); columnNamesBasic.add("price"); columnNamesBasic.add("genre"); columnNamesBasic.add("publishDate"); columnNamesBasic.add("description"); columnNamesBasic.add("dynamiccolumn1"); columnNamesBasic.add("dynamiccolumn2"); columnNamesBasic.add("dynamiccolumn3"); verifyContainsColumns(col, columnNamesBasic, contains, prefixes); } private void verifyContainsColumns(Collection<? extends CqlPart> col, List<String> columnNamesBasic, boolean contains, String... prefixes) { col = asHahsCol(col); assertNotNull(col); for (String colNam : columnNamesBasic) { assertEquals(colNam + " not found in: " + col.toString(), contains, col.contains(new CqlColumnName(colNam))); } for (String prefix : prefixes) { for (String colNam : columnNamesBasic) { String conNamFull = prefix + colNam; assertEquals(conNamFull + " not found in: " + col.toString(), contains, col.contains(new CqlPart(conNamFull))); } } } public void verifyContainsNoKeywords(Collection<? extends CqlPart> cmp) { for (CqlPart part : cmp) { if (part instanceof CqlKeyword) { assertFalse(part + " FOUND in: " + cmp, true); } } } public void verifyContainsOnlyKeywords(Collection<? extends CqlPart> cmp, CqlKeyword... keywords) { assertTrue(keywords.length > 0); Set<CqlKeyword> keywordsSet = new HashSet<>(); for (CqlKeyword def : keywords) { assertTrue(def + " not found in: " + cmp, cmp.contains(def)); keywordsSet.add(def); } for (CqlKeyword.Def def : CqlKeyword.Def.values()) { if (keywordsSet.contains(def.value)) { continue; } assertFalse(def.value + " FOUND in: " + cmp, cmp.contains(def.value)); } } public void verifyContainsSystemColumns(Collection<? extends CqlPart> col, boolean contains) { col = asHahsCol(col); assertNotNull(col); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("truncated_at"))); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("tokens"))); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("peer"))); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("token_bytes"))); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("rpc_address"))); assertEquals(col.toString(), contains, col.contains(new CqlColumnName("replicate_on_write"))); } public void verifyContainsTableNamesCqlDemo(Collection<? extends CqlPart> col, boolean contains) { col = asHahsCol(col); assertNotNull(col); assertTrue("Size:" + col.size(), col.size() >= 2); assertEquals(col.toString(), contains, col.contains(new CqlTable("mybooks"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("compoundtest"))); } public void verifyContainsTableNamesSystem(Collection<? extends CqlPart> col, boolean contains) { col = asHahsCol(col); assertNotNull(col); assertTrue("Size:" + col.size(), col.size() >= (contains ? 10 : 0)); assertEquals(col.toString(), contains, col.contains(new CqlTable("sstable_activity"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("schema_triggers"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("range_xfers"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("nodeidinfo"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("local"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("compactions_in_progress"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("compaction_history"))); } public void verifyContainsTableNamesWithSpaceCqlDemo(Collection<? extends CqlPart> col, boolean contains) { col = asHahsCol(col); assertNotNull(col); assertTrue("Size:" + col.size(), col.size() >= 2); assertEquals(col.toString(), contains, col.contains(new CqlTable("cqldemo", "mybooks"))); assertEquals(col.toString(), contains, col.contains(new CqlTable("cqldemo", "compoundtest"))); } public void verifyFullAndMinCompletionNotTheSame(ContextCqlCompletion completion, int minMinSize, int fullMinSize) { assertNotNull(completion); Collection<? extends CqlPart> fullCompletion = asHahsCol(completion.cqlCompletion.fullCompletion); assertNotNull(fullCompletion); Collection<? extends CqlPart> minCompletion = asHahsCol(completion.cqlCompletion.minCompletion); assertNotNull(minCompletion); assertTrue("minCompletion:" + minCompletion.size() + ">" + minMinSize, minCompletion.size() >= minMinSize); assertTrue("fullCompletion:" + fullCompletion.size() + ">" + fullMinSize, fullCompletion.size() >= fullMinSize); assertFalse(minCompletion.containsAll(fullCompletion)); } public void verifyFullAndMinCompletionTheSame(ContextCqlCompletion completion, int minSize) { assertNotNull(completion); ImmutableSortedSet<? extends CqlPart> fullCompletion = completion.cqlCompletion.fullCompletion; assertNotNull(fullCompletion); ImmutableSortedSet<? extends CqlPart> minCompletion = completion.cqlCompletion.minCompletion; assertNotNull(minCompletion); assertEquals(fullCompletion.size(), minCompletion.size()); assertTrue(fullCompletion + " - " + minCompletion, fullCompletion.containsAll(minCompletion)); assertTrue(minCompletion.size() + ">" + minSize, minCompletion.size() >= minSize); } public void verifyIsEmpty(Collection<?> col) { assertNotNull(col); assertEquals(0, col.size()); } public void verifyIsEmpty(ContextCqlCompletion completion) { assertNotNull(completion); assertNotNull(completion.cqlCompletion); assertNotNull(completion.cqlCompletion); verifyIsEmpty(completion.cqlCompletion.fullCompletion); verifyIsEmpty(completion.cqlCompletion.minCompletion); } }