A popular definition of unit test is that of the ISTQB:
A unit test is the smallest testable part of an application like
functions, classes, procedures, interfaces. Unit testing is a method
by which individual units of source code are tested to determine if
they are fit for use.
According to this definition:
- if you write a test program for B, it's a unit test (of B).
- if you write a test program for C, it's a unit test (of C).
Now there can be a difference between intent and test scope. If you write a test program for B by using C, it's still a unit test of C, because all you can do is to provide the input to C and check based on the output if B was correct. It's just that you deduce that B works because C works.
There is also a definition of integration test:
Testing performed to expose defects in the interfaces and in the
interactions between integrated components or systems.
The usual definition of software components implies that it is independent and can be deployed on its own. Here, B and C seem not to be independent components, so we have no integration test.