# 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
#
#     https://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
