haraldmaida / abacussfx   0.1.0

Apache License 2.0 GitHub

A software Abacus implemented in Scala as ScalaFX application.

Scala versions: 2.11

Abacus SFX     Bintray JCenter License

A software Abacus implemented in Scala as ScalaFX application.

This project started mainly to demonstrate the usage ScalaTestFX for automated UI-tests and to evaluate improvements and enhancements for ScalaTestFX. Meanwhile this Abacus application grew to a quite feature rich implementation. Here are some of the enhanced features:

  • switch between different types of Abaci: Soroban (Japanese), Suanban (Chinese) and Schoty (Russian)
  • display the current number of each rod in a split-flap display


Build Status

A first version of the Abacus application is finished and works quite well.

Unit tests for the domain layer are available.

Now it's time to write the ScalaTestFX test cases to test the UI ;-)


The two goals of this project are:

  1. creating a small application to demonstrate the usage of ScalaTestFX with.

  2. playing around with different styles of writing test code to find most efficient ways of writing and maintaining test cases for automated UI-tests.

As a result I hope to create ideas for improving ScalaTestFX, especially the test DSL for controlling and assertion of the UI under test.


I wanted to create a small ScalaFX application to demonstrate the usage of ScalaTestFX based on a "real world" application. While i was groping around for ideas what this application should be I stumbled over the Abacus JavaFX application created by Dierk as a tutorial application for learning JavaFX.

Inspired by Dierk's Abacus application I got fascinated in Abaci in general.


Copyright (C) 2016 Innoave.com

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


Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.