95c5ca52c7cf643b7245b1429196ac886f438c0c
[idea/community.git] / images / test / org / intellij / images / index / ImageInfoIndexTest.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package org.intellij.images.index;
3
4 import com.intellij.openapi.vfs.VfsUtil;
5 import com.intellij.openapi.vfs.VirtualFile;
6 import com.intellij.testFramework.fixtures.BasePlatformTestCase;
7 import com.intellij.util.indexing.FileBasedIndex;
8 import org.intellij.images.util.ImageInfo;
9
10 import java.io.IOException;
11
12 import static org.junit.Assert.assertNotEquals;
13
14 public class ImageInfoIndexTest extends BasePlatformTestCase {
15   public void testIndexModification() throws IOException {
16     VirtualFile file = myFixture.addFileToProject("image.svg", "<svg width='300' height='300' xmlns='http://www.w3.org/2000/svg'></svg>").getVirtualFile();
17     long stamp = getIndexStamp();
18     ImageInfo value = getIndexValue(file);
19
20     VfsUtil.saveText(file, "<svg width='500' height='300' xmlns='http://www.w3.org/2000/svg'></svg>");
21     assertNotEquals(stamp, getIndexStamp());
22     assertNotEquals(value, getIndexValue(file));
23     stamp = getIndexStamp();
24     value = getIndexValue(file);
25
26     VfsUtil.saveText(file, "<svg width='500' height='300' xmlns='http://www.w3.org/2000/svg'><path d=\"M10 10\"/></svg>");
27     assertEquals(stamp, getIndexStamp());
28     assertEquals(value, getIndexValue(file));
29   }
30
31   private long getIndexStamp() {
32     return FileBasedIndex.getInstance().getIndexModificationStamp(ImageInfoIndex.INDEX_ID, myFixture.getProject());
33   }
34
35   private ImageInfo getIndexValue(VirtualFile file) {
36     return FileBasedIndex.getInstance().getFileData(ImageInfoIndex.INDEX_ID, file, myFixture.getProject()).values().iterator().next();
37   }
38
39   @Override
40   protected boolean isWriteActionRequired() {
41     return true;
42   }
43 }