What I did instead was a few test cases against this online AES encryption oracle which passes with the test vectors for ECB mode to verify that individual blocks are encrypted correctly using a snippet like this:
mob
var/AES/aes = new()
var/cipher_text
verb
Encrypt_Test()
var/data = "ThisIsThePlainTe"
var/key = "ThisIsTheKeyTest"
data = aes.text2mat(data)
key = aes.text2int(key)
world << "Encrypting"
data = aes.EncBlock(data, key)
world << "Encryption Complete"
var/out = ""
for(var/i = 1 to length(data))
for(var/j = 1; j <= 4; j++)
out += "[data[i][j]] "
out += "\n"
world << "Cipher-text:\n[out]"
cipher_text = data
world << "Decrypting"
data = aes.DecBlock(cipher_text,key)
world << "Decryption Complete"
world << "Plain-text: [aes.mat2text(data)]"
Note the cipher-text is treated as a 4x4 matrix of integers because of the aforementioned ASCII problem so I had to convert the integers into hex to verify against the online calculator.
This gave me confidence that my encryption of individual blocks was adequate because it produced the same results as an oracle that does satisfy those test vectors. I was mainly concerned with verifying that individual blocks are encrypted correctly so I did indeed skimp on the testing of CBC mode. I'm considering an update that's hexadecimal friendly which would make it possible to test against those test-vectors directly. Your complaint is extremely valid though, and I'll add a disclaimer to the hub and make it invisible until I do validate against those test vectors.
I added a hexadecimal mode to the library and in that mode I added a Test Vectors function to the demo that executes all of the CBC test vectors from iconteam.com. It all checked out. Note that the default mode is still the ASCII characters mode so to get the test vectors function you need to change the input mode.