# 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.

jdo.tck.description = All jdoql tests with standard mapping, no testdata. 
jdo.tck.mapping.companyfactory =
jdo.tck.testdata = 
jdo.tck.standarddata = 
jdo.tck.mapping = 0
jdo.tck.requiredOptions =
jdo.tck.classes = \
org.apache.jdo.tck.query.jdoql.AssignmentPrePostIncrementDecrementNotSupported \
org.apache.jdo.tck.query.jdoql.Cast \
org.apache.jdo.tck.query.jdoql.CharacterAndStringLiterals \
org.apache.jdo.tck.query.jdoql.ComparingCollectionFieldToNull \
org.apache.jdo.tck.query.jdoql.ComparingPersistentAndNonPersistentInstance \
org.apache.jdo.tck.query.jdoql.DenoteUniquenessInFilter \
org.apache.jdo.tck.query.jdoql.ExecuteQueryWhenPersistenceManagerIsClosed \
org.apache.jdo.tck.query.jdoql.ExecutingMultipleQueriesSimultaneouslyIsThreadSafe \
org.apache.jdo.tck.query.jdoql.ExecutingQueryWhenNoTransactionNoNontransactionalRead \
org.apache.jdo.tck.query.jdoql.Having \
org.apache.jdo.tck.query.jdoql.IdentifiersEqualFieldNames \
org.apache.jdo.tck.query.jdoql.IfElseInFilter \
org.apache.jdo.tck.query.jdoql.IgnoreCacheFalse \
org.apache.jdo.tck.query.jdoql.MultipleActiveQueryInstanceInSamePersistenceManager \
org.apache.jdo.tck.query.jdoql.MultipleIdenticalImports \
org.apache.jdo.tck.query.jdoql.NamespaceOfIdentifiers \
org.apache.jdo.tck.query.jdoql.NavigationComparisonWithNull \
org.apache.jdo.tck.query.jdoql.NavigationThroughACollectionField \
org.apache.jdo.tck.query.jdoql.NavigationThroughANullValuedField \
org.apache.jdo.tck.query.jdoql.NavigationThroughReferencesUsesDotOperator \
org.apache.jdo.tck.query.jdoql.NegativeRange \
org.apache.jdo.tck.query.jdoql.NullCollectionsAndContainsMethod \
org.apache.jdo.tck.query.jdoql.NullCollectionsAndIsEmpty \
org.apache.jdo.tck.query.jdoql.OrderingSpecification \
org.apache.jdo.tck.query.jdoql.ParenthesesMarkOperatorPrecedence \
org.apache.jdo.tck.query.jdoql.PositiveRange \
org.apache.jdo.tck.query.jdoql.QueryIsSerializable \
org.apache.jdo.tck.query.jdoql.QueryResultPassedToAnotherQuery \
org.apache.jdo.tck.query.jdoql.QueryWithNoFilter \
org.apache.jdo.tck.query.jdoql.RangeAsString \
org.apache.jdo.tck.query.jdoql.RestoredSerializedQueryInstanceLosesAssociationWithPM \
org.apache.jdo.tck.query.jdoql.SeparateNamespaceForTypeNames \
org.apache.jdo.tck.query.jdoql.WhiteSpaceIsACharacterAndIgnored \
org.apache.jdo.tck.query.jdoql.keywords.InvalidUseOfKeywords \
org.apache.jdo.tck.query.jdoql.keywords.KeywordsAsFieldNames \
org.apache.jdo.tck.query.jdoql.keywords.SingleString \
org.apache.jdo.tck.query.jdoql.keywords.ThisIsReservedWordForElementOfCollection \
org.apache.jdo.tck.query.jdoql.keywords.UppercaseLowercase \
org.apache.jdo.tck.query.jdoql.keywords.UseOfThisToAcessHiddenField \
org.apache.jdo.tck.query.jdoql.methods.EnumMethodToString \
org.apache.jdo.tck.query.jdoql.methods.MethodsAndObjectConstructionNotSupported \
org.apache.jdo.tck.query.jdoql.methods.StartsWithAndEndsWith \
org.apache.jdo.tck.query.jdoql.methods.SupportedCollectionMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedDateMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedLocalDateMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedLocalDateTimeMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedLocalTimeMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedTimeMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedJDOHelperMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedListMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedMapMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedMathMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedOptionalMethods \
org.apache.jdo.tck.query.jdoql.methods.SupportedStringMethods \
org.apache.jdo.tck.query.jdoql.operators.BinaryAddition \
org.apache.jdo.tck.query.jdoql.operators.BinarySubtraction \
org.apache.jdo.tck.query.jdoql.operators.BitwiseBinaryOperators \
org.apache.jdo.tck.query.jdoql.operators.BitwiseComplement \
org.apache.jdo.tck.query.jdoql.operators.BooleanLogicalAND \
org.apache.jdo.tck.query.jdoql.operators.BooleanLogicalOR \
org.apache.jdo.tck.query.jdoql.operators.ConditionalAND \
org.apache.jdo.tck.query.jdoql.operators.ConditionalOR \
org.apache.jdo.tck.query.jdoql.operators.Division \
org.apache.jdo.tck.query.jdoql.operators.Equality \
org.apache.jdo.tck.query.jdoql.operators.EqualityAndComparisonsBetweenDateFieldsAndParameters \
org.apache.jdo.tck.query.jdoql.operators.EqualityAndComparisonsBetweenPrimitivesAndWrapperInstances \
org.apache.jdo.tck.query.jdoql.operators.EqualityAndComparisonsBetweenStringFieldsAndParameters \
org.apache.jdo.tck.query.jdoql.operators.GreaterThan \
org.apache.jdo.tck.query.jdoql.operators.GreaterThanOrEqual \
org.apache.jdo.tck.query.jdoql.operators.Instanceof \
org.apache.jdo.tck.query.jdoql.operators.LessThan \
org.apache.jdo.tck.query.jdoql.operators.LessThanOrEqual \
org.apache.jdo.tck.query.jdoql.operators.LogicalComplement \
org.apache.jdo.tck.query.jdoql.operators.Multiplication \
org.apache.jdo.tck.query.jdoql.operators.Modulo \
org.apache.jdo.tck.query.jdoql.operators.NotEquals \
org.apache.jdo.tck.query.jdoql.operators.PromotionOfNumericOperands \
org.apache.jdo.tck.query.jdoql.operators.SignInversion \
org.apache.jdo.tck.query.jdoql.operators.StringConcatenation \
org.apache.jdo.tck.query.jdoql.operators.UnaryPlus \
org.apache.jdo.tck.query.jdoql.parameters.BoundParameterCheck \
org.apache.jdo.tck.query.jdoql.parameters.DomainObjectsAsParameters \
org.apache.jdo.tck.query.jdoql.parameters.ImplicitParameters \
org.apache.jdo.tck.query.jdoql.parameters.MixedParameters \
org.apache.jdo.tck.query.jdoql.parameters.OrderOfParameters \
org.apache.jdo.tck.query.jdoql.parameters.ParameterBoundToDifferentPM \
org.apache.jdo.tck.query.jdoql.parameters.ParameterDeclaredWithSameNameAsFieldOfCandidateClass \
org.apache.jdo.tck.query.jdoql.parameters.PrimitiveParameterPassedAsNull \
org.apache.jdo.tck.query.jdoql.subqueries.AggregateOnSize \
org.apache.jdo.tck.query.jdoql.subqueries.CorrelatedSubqueries \
org.apache.jdo.tck.query.jdoql.subqueries.CorrelatedSubqueriesWithParameters \
org.apache.jdo.tck.query.jdoql.subqueries.MultipleCallsReplaceSubquery \
org.apache.jdo.tck.query.jdoql.subqueries.NonCorrelatedSubqueries \
org.apache.jdo.tck.query.jdoql.subqueries.NullCandidateCollectionExpression \
org.apache.jdo.tck.query.jdoql.subqueries.NullSubqueryParameter \
org.apache.jdo.tck.query.jdoql.subqueries.NullVariableDeclaration \
org.apache.jdo.tck.query.jdoql.subqueries.UnmodifiedSubqueryInstance \
org.apache.jdo.tck.query.jdoql.variables.MixedVariables \
org.apache.jdo.tck.query.jdoql.variables.UnconstrainedVariable \
org.apache.jdo.tck.query.jdoql.variables.VariablesAndFields \
org.apache.jdo.tck.query.jdoql.variables.VariablesWithoutExtent \
org.apache.jdo.tck.query.jdoql.variables.VariableDeclaredWithSameNameAsFieldOfCandidateClass
