/* * Copyright 2000-2016 JetBrains s.r.o. * * Licensed 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 com.intellij.util.indexing.impl; import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.SystemProperties; import com.intellij.util.containers.hash.LinkedHashMap; import com.intellij.util.io.KeyDescriptor; import java.util.Collection; import java.util.Formatter; public class DebugAssertions { private static final Logger LOG = Logger.getInstance(DebugAssertions.class); @SuppressWarnings("StaticNonFinalField") public static volatile boolean DEBUG = SystemProperties.getBooleanProperty( "intellij.idea.indices.debug", false ); public static final boolean EXTRA_SANITY_CHECKS = SystemProperties.getBooleanProperty( "intellij.idea.indices.debug.extra.sanity", false //DEBUG // todo https://youtrack.jetbrains.com/issue/IDEA-134916 ); public static void assertTrue(boolean value) { if (!value) { LOG.assertTrue(false); } } public static void assertTrue(boolean value, String message, Object ... args) { if (!value) { error(message, args); } } public static void error(String message, Object ... args) { LOG.error(new Formatter().format(message, args)); } public static <Key> boolean equals(Collection<Key> keys, Collection<Key> keys2, KeyDescriptor<Key> keyDescriptor) { if (keys == null && keys2 == null) return true; if (keys == null || keys2 == null || keys.size() != keys2.size()) return false; LinkedHashMap<Key, Boolean> map = new LinkedHashMap<Key, Boolean>(keys.size(), 0.8f, keyDescriptor); for(Key key:keys) map.put(key, Boolean.TRUE); LinkedHashMap<Key, Boolean> map2 = new LinkedHashMap<Key, Boolean>(keys.size(), 0.8f, keyDescriptor); for(Key key:keys2) map2.put(key, Boolean.TRUE); return map.equals(map2); } }