| /* |
| * Copyright (C) 2023, SAP SE or an SAP affiliate company and others |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Distribution License v. 1.0 which is available at |
| * https://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| package org.eclipse.jgit.lib; |
| |
| import java.io.ByteArrayOutputStream; |
| import java.io.OutputStreamWriter; |
| import java.io.UnsupportedEncodingException; |
| import java.nio.charset.StandardCharsets; |
| |
| import org.junit.Assert; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| public class TextProgressMonitorTest { |
| |
| private TextProgressMonitor m; |
| |
| private ByteArrayOutputStream buf; |
| |
| @Before |
| public void setup() { |
| buf = new ByteArrayOutputStream(); |
| m = new TextProgressMonitor( |
| new OutputStreamWriter(buf, StandardCharsets.UTF_8)); |
| } |
| |
| @Test |
| public void testSimple() throws Exception { |
| m.beginTask("task", 10); |
| for (int i = 0; i < 10; i++) { |
| m.update(1); |
| } |
| m.endTask(); |
| Assert.assertArrayEquals( |
| new String[] { "", "task: 10% ( 1/10)", |
| "task: 20% ( 2/10)", |
| "task: 30% ( 3/10)", |
| "task: 40% ( 4/10)", |
| "task: 50% ( 5/10)", |
| "task: 60% ( 6/10)", |
| "task: 70% ( 7/10)", |
| "task: 80% ( 8/10)", |
| "task: 90% ( 9/10)", |
| "task: 100% (10/10)", |
| "task: 100% (10/10)\n" }, |
| bufLines()); |
| } |
| |
| @Test |
| public void testLargeNumbers() throws Exception { |
| m.beginTask("task", 1_000_000_000); |
| for (int i = 0; i < 10; i++) { |
| m.update(100_000_000); |
| } |
| m.endTask(); |
| Assert.assertArrayEquals( |
| new String[] { "", |
| "task: 10% ( 100000000/1000000000)", |
| "task: 20% ( 200000000/1000000000)", |
| "task: 30% ( 300000000/1000000000)", |
| "task: 40% ( 400000000/1000000000)", |
| "task: 50% ( 500000000/1000000000)", |
| "task: 60% ( 600000000/1000000000)", |
| "task: 70% ( 700000000/1000000000)", |
| "task: 80% ( 800000000/1000000000)", |
| "task: 90% ( 900000000/1000000000)", |
| "task: 100% (1000000000/1000000000)", |
| "task: 100% (1000000000/1000000000)\n" }, |
| bufLines()); |
| } |
| |
| String[] bufLines() throws UnsupportedEncodingException { |
| String s = new String(buf.toString(StandardCharsets.UTF_8.name())); |
| return s.split("\r"); |
| } |
| } |