Hey, I’m Akebu. This summer I had the incredible opportunity to contribute to the Open-Source Project, Pocket Paint for Android created by Catrobat. My project was a continuation of refactoring and it involved refactoring the tests from Java to Kotlin and to refactor the remaining. The project was broken down into 13 individual Pull Requests, with each focussing on refactoring 10 or more tests. Here is a breakdown of all the work that I refactored (tests) from androidTest and test modules
- Refactor the following test:
Log.java
to Kotlin and during the code review, the file was observed to have no particular use and had to be deleted. Ticket-431, PR - Refactored the following tests: Ticket-446, PR
BitmapIntegrationTest
FileFromOtherSourceIntegrationTest
ToolOptionsIntegrationTest
ToolSelectionIntegrationTest
StatusbarIntegrationTest
- Refactored the following tests: Ticket-447, PR
LandscapeIntegrationTest
MainActivityIntegrationTest
SaveCompressionIntegrationTest
UndoREdoIntegrationTest
- Refactored the following tests: Ticket-460, PR
PointFMatcher
PointFAnswer
PaintroidAsserts
ScreenshotOnFailRule
RtlActivityTestRule
RtlUiTestUtils
CustomSwiper
LanguageSupport
OffsetLocationProvider
PositionCoordinatesProvider
- Refactored the following tests: Ticket-463, PR
PerspectiveTest
LayerTest
LayerModelTest
AddLayerCommandTest
CompositeCommandTest
FillCommandTest
LoadCommandTest
PointCommandTest
ReorderLayersCommandTest
RemoveLayerCommandTest
ResetCommandTest
SelectLayerCommandTest
- Refactored the following tests: Ticket-470, PR
FileIOTest
StampToolTest
ScreenshotOnFailRule
PaintroidAsserts
ShapeToolTest
ImportToolTest
FillToolTest
PathStub
LayerTest
SetDimensionCommandTest
DefaultCommandManagerTest
MoreOptionsIntegrationTest
OpenedFromPocketCodeNewImageTest
IntroIntegrationTest
HindiNumberFormatTest
ButtonLayersRtlLayoutTest
- Refactored the following tests: Ticket-471, PR
ToolControllerTest
AutoScrollTaskTest
DrawingSurfaceListenerTest
LayerPresenterTest
MainActivityPresenterTest
- Refactored the following tests: Ticket-472, PR
BaseToolWithRectangleShapeToolTest
BrushToolTest
CursorToolTest
PipetteToolTest
StampCommandTest
ResizeCommandTest
PointCommandTest
PathCommandTest
FlipCommandTest
CropCommandTest
DefaultCommandFactoryTest
- Refactored the following tests: Ticket-473, PR
MainActivityIntentTest
OraFileIntentTest
SaveCompressImageIntegrationTest
ScrollingViewIntegrationTest
ToolOnBackPressedIntegrationTest
ToolSelectionIntegrationTest
BitmapLocationProvider
DrawingSurfaceLocationProvider
UiMatcher
UiInteraction
MainActivityHelper
- Refactored the following tests: Ticket-474, PR
TransformToolOptionsViewInteraction
TopBarViewInteraction
ToolPropertiesInteraction
ToolBarViewInteraction
ShapeToolOptionsViewInteraction
OptionsMenuViewInteraction
LayerMenuViewInteraction
DrawingSurfaceInteraction
CustomViewInteraction
ConfirmQuitDialogInteraction
ColorPickerViewInteraction
ColorPickerPreviewInteraction
BrushPickerViewInteraction
BottomNavigationViewInteraction
- Refactored the following tests: Ticket-475, PR
BrushPickerIntegrationTest
ColorDialogIntegrationTest
StampToolIntegrationTest
EraserToolIntegrationTest
FillToolIntegrationTest
FlipToolIntegrationTest
ImportToolIntegrationTest
ShapeToolEraseIntegrationTest
ShapeToolIntegrationTest
ShapeToolOrientationIntegrationTest
MainActivityIntentTest
- Refactored the following tests: Ticket-476, PR
LineToolIntegrationTest
PipetteToolIntegrationTest
TextToolFontListTest
TextToolIntegrationTest
TextToolFontListArabic
Refactored OpenRasterFileFormatConversion
: Ticket-301
The thing left is to have to PRs reviewed by the team and have them merged into the codebase
I had a lot of fun working on Pocket Paint
(Paintroid). It uses test driven development
(TDD) and clean code
practices which really helped me improve in my test writing and adopt more clean code practices. I learnt a lot about Kotlin’s null safety
and got to work with Detekt
, Jerkins
and Jira
.
A special thanks to my mentors Thorsten Bandel and Stefan Kutschera
, especially Thorsten Bandel for answering all my questions and helping me out when I didn’t know how to move forward with my work. Thank you, Stefan Kutschera
, for helping me get into GSoC.
Massive thanks to Michael Tiefnig for explaining how to Detekt works. Massive thanks to Gerhard Fromm for helping me understand how Jerkins works.
I'd also like to say a massive thanks to Wolfgang Slany for letting me join the Paintroid
team. It has been an incredible experience where I got to learn to much and appreciate what team work actually means.