The source command runs the script in the current shell. tcsh -c "source ~/test.tcsh" sources the file test.tcsh in the shell running the source command, which is an instance of tcsh, not the bash shell that runs tcsh. You aren't going to be able to execute a tcsh script in any way that affects the environment of the current bash shell. You could start a new bash shell that inherits from an instance of tcsh which was so modified, with something like
tcsh -c 'source ~/test.tcsh; bash'
but that may not be what you need. For instance,
tcsh -c 'source ~/test.tcsh; bash'
echo "OK, we're back"
will leave you in an interactive bash shell, but you won't see "OK, we're back" until after you exit that shell, which will cause tcsh to exit and return control to the original.