tikhomirov@115: /* tikhomirov@115: * Copyright (c) 2011 TMate Software Ltd tikhomirov@115: * tikhomirov@115: * This program is free software; you can redistribute it and/or modify tikhomirov@115: * it under the terms of the GNU General Public License as published by tikhomirov@115: * the Free Software Foundation; version 2 of the License. tikhomirov@115: * tikhomirov@115: * This program is distributed in the hope that it will be useful, tikhomirov@115: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@115: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@115: * GNU General Public License for more details. tikhomirov@115: * tikhomirov@115: * For information on how to redistribute this software under tikhomirov@115: * the terms of a license other than GNU General Public License tikhomirov@130: * contact TMate Software at support@hg4j.com tikhomirov@115: */ tikhomirov@115: package org.tmatesoft.hg.test; tikhomirov@115: tikhomirov@157: import static org.junit.Assert.assertArrayEquals; tikhomirov@115: tikhomirov@115: import org.junit.Assert; tikhomirov@157: import org.junit.Test; tikhomirov@115: import org.tmatesoft.hg.internal.ByteArrayChannel; tikhomirov@115: import org.tmatesoft.hg.repo.HgDataFile; tikhomirov@157: import org.tmatesoft.hg.repo.HgRepository; tikhomirov@115: tikhomirov@115: /** tikhomirov@115: * tikhomirov@115: * @author Artem Tikhomirov tikhomirov@115: * @author TMate Software Ltd. tikhomirov@115: */ tikhomirov@115: public class TestByteChannel { tikhomirov@115: tikhomirov@157: private HgRepository repo; tikhomirov@157: tikhomirov@115: public static void main(String[] args) throws Exception { tikhomirov@157: // HgRepoFacade rf = new HgRepoFacade(); tikhomirov@157: // rf.init(); tikhomirov@157: // HgDataFile file = rf.getRepository().getFileNode("src/org/tmatesoft/hg/internal/KeywordFilter.java"); tikhomirov@157: // for (int i = file.getLastRevision(); i >= 0; i--) { tikhomirov@157: // System.out.print("Content for revision:" + i); tikhomirov@157: // compareContent(file, i); tikhomirov@157: // System.out.println(" OK"); tikhomirov@157: // } tikhomirov@116: //CatCommand cmd = rf.createCatCommand(); tikhomirov@116: } tikhomirov@116: tikhomirov@157: // private static void compareContent(HgDataFile file, int rev) throws Exception { tikhomirov@157: // byte[] oldAccess = file.content(rev); tikhomirov@157: // ByteArrayChannel ch = new ByteArrayChannel(); tikhomirov@157: // file.content(rev, ch); tikhomirov@157: // byte[] newAccess = ch.toArray(); tikhomirov@157: // Assert.assertArrayEquals(oldAccess, newAccess); tikhomirov@157: // // don't trust anyone (even JUnit) tikhomirov@157: // if (!Arrays.equals(oldAccess, newAccess)) { tikhomirov@157: // throw new RuntimeException("Failed:" + rev); tikhomirov@157: // } tikhomirov@157: // } tikhomirov@157: tikhomirov@157: @Test tikhomirov@157: public void testContent() throws Exception { tikhomirov@157: repo = Configuration.get().find("log-1"); tikhomirov@157: final byte[] expectedContent = new byte[] { 'a', ' ', 13, 10 }; tikhomirov@115: ByteArrayChannel ch = new ByteArrayChannel(); tikhomirov@157: repo.getFileNode("dir/b").content(0, ch); tikhomirov@157: assertArrayEquals(expectedContent, ch.toArray()); tikhomirov@157: repo.getFileNode("d").content(HgRepository.TIP, ch = new ByteArrayChannel() ); tikhomirov@157: assertArrayEquals(expectedContent, ch.toArray()); tikhomirov@157: } tikhomirov@157: tikhomirov@157: @Test tikhomirov@157: public void testStripMetadata() throws Exception { tikhomirov@157: repo = Configuration.get().find("log-1"); tikhomirov@157: ByteArrayChannel ch = new ByteArrayChannel(); tikhomirov@157: HgDataFile dir_b = repo.getFileNode("dir/b"); tikhomirov@157: Assert.assertTrue(dir_b.isCopy()); tikhomirov@157: Assert.assertEquals("b", dir_b.getCopySourceName().toString()); tikhomirov@157: Assert.assertEquals("e44751cdc2d14f1eb0146aa64f0895608ad15917", dir_b.getCopySourceRevision().toString()); tikhomirov@157: dir_b.content(0, ch); tikhomirov@157: // assert rawContent has 1 10 ... 1 10 tikhomirov@157: assertArrayEquals("a \r\n".getBytes(), ch.toArray()); tikhomirov@157: // tikhomirov@157: // try once again to make sure metadata records/extracts correct offsets tikhomirov@157: dir_b.content(0, ch = new ByteArrayChannel()); tikhomirov@157: assertArrayEquals("a \r\n".getBytes(), ch.toArray()); tikhomirov@115: } tikhomirov@115: }