プロジェクト

全般

プロフィール

ダウンロード (1.87 KB) 統計
| ブランチ: | タグ: | リビジョン:
/*
* Copyright © 2014 TAKAHASHI,Toru
*/
package analogclocksvg;

import java.time.LocalTime;
import java.util.stream.IntStream;
import static java.util.stream.Collectors.joining;
import javafx.geometry.Point2D;
import javafx.scene.shape.Line;
import javafx.scene.transform.Rotate;
import static org.hamcrest.CoreMatchers.is;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;

/**
*
* @author TAKAHASHI,Toru
*/
public class AnalogClockControllerTest {

AnalogClockController sut;

public AnalogClockControllerTest() {
}

@Before
public void setUp() {
sut = new AnalogClockController();
}

@Test
public void getMinuteAngleのテスト() {
LocalTime time = LocalTime.of(0, 0, 30);
assertThat(sut.getMinuteAgnel(time), is(3));
}

@Test
public void 文字盤の分刻みSVGデータ生成() {
String pathData = IntStream.range(0, 60)
.mapToObj(this::createLine)
.map(line -> String.format("M %.1f,%.1f L %.1f,%.1f", line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY()))
.collect(joining(" "));
System.out.println(pathData);
}

/**
* 文字盤の分個別のラインを生成する。
*
* 5分置きに長い線を、それ以外の分は短い線を作成し、分に応じて回転させる。
*
* @param minute 生成する対象の分
* @return 指定した分に対応するライン
*/
private Line createLine(int minute) {
Rotate rot = new Rotate(minute * 6, 100, 100);
Point2D p0 = rot.transform(100, minute % 5 == 0 ? 12 : 16);
Point2D p1 = rot.transform(100, minute % 5 == 0 ? 32 : 18);
Line line = new Line(p0.getX(), p0.getY(), p1.getX(), p1.getY());
return line;
}
}
    (1-1/1)