﻿Given the following natural language specification, produce a complete implementation with a test suite.

"Build a password strength checker. A password is 'weak' if it is under 8 characters or contains only letters. It is 'medium' if it is 8-12 characters and contains at least one letter and one digit. It is 'strong' if it is over 12 characters and contains uppercase, lowercase, digits, and at least one special character (!@#$%^&*). Return the strength level and a list of specific suggestions for improvement."
