Setting alignment on non-fixed component.

Size of a component is calculated based on requested size and actual size if it is not fixed.

Close #999.
Can we find a way to split this up?  assert.isTrue is significantly less useful than its high-level counterparts since the high-level API can reveal info about its arguments